changeset 30:8d574f2d4174

Cleaned up client
author adminsh@apollo
date Wed, 21 Mar 2012 22:26:48 +0000
parents 9919ee227c93
children 7d9de5746f18
files Messaging/Client/App.xaml Messaging/Client/Client.csproj Messaging/Client/MainWindow.xaml Messaging/Client/MainWindow.xaml.cs Messaging/Client/Sockets/AsynchronousClient.cs Messaging/Client/Sockets/StateObject.cs Messaging/Client/UI/MainWindow.xaml Messaging/Client/UI/MainWindow.xaml.cs Messaging/Client/UI/upload.ico
diffstat 9 files changed, 144 insertions(+), 312 deletions(-) [+]
line wrap: on
line diff
--- a/Messaging/Client/App.xaml	Wed Mar 21 22:09:18 2012 +0000
+++ b/Messaging/Client/App.xaml	Wed Mar 21 22:26:48 2012 +0000
@@ -1,8 +1,14 @@
 <Application x:Class="Client.App"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             StartupUri="MainWindow.xaml">
+             StartupUri="UI\MainWindow.xaml">
     <Application.Resources>
-         
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="/Elysium.Theme;component/Themes/Generic.xaml" />
+            </ResourceDictionary.MergedDictionaries>
+            <!--  Bug in .Net 4: http://connect.microsoft.com/VisualStudio/feedback/details/555322/global-wpf-styles-are-not-shown-when-using-2-levels-of-references  -->
+            <Style TargetType="{x:Type Window}" />
+        </ResourceDictionary>
     </Application.Resources>
 </Application>
--- a/Messaging/Client/Client.csproj	Wed Mar 21 22:09:18 2012 +0000
+++ b/Messaging/Client/Client.csproj	Wed Mar 21 22:26:48 2012 +0000
@@ -40,6 +40,9 @@
     </ApplicationIcon>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Elysium.Theme">
+      <HintPath>..\Libs\Elysium.Theme.1.3\Elysium.Theme.dll</HintPath>
+    </Reference>
     <Reference Include="RabbitMQ.Client, Version=2.6.1.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\Libs\RabbitMq.2.6.1.0\RabbitMQ.Client.dll</HintPath>
@@ -60,9 +63,7 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </ApplicationDefinition>
-    <Compile Include="Sockets\AsynchronousClient.cs" />
-    <Compile Include="Sockets\StateObject.cs" />
-    <Page Include="MainWindow.xaml">
+    <Page Include="UI\MainWindow.xaml">
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
@@ -70,7 +71,7 @@
       <DependentUpon>App.xaml</DependentUpon>
       <SubType>Code</SubType>
     </Compile>
-    <Compile Include="MainWindow.xaml.cs">
+    <Compile Include="UI\MainWindow.xaml.cs">
       <DependentUpon>MainWindow.xaml</DependentUpon>
       <SubType>Code</SubType>
     </Compile>
@@ -105,6 +106,9 @@
       <Name>Common</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <Resource Include="UI\upload.ico" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
--- a/Messaging/Client/MainWindow.xaml	Wed Mar 21 22:09:18 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<Window x:Class="Client.MainWindow"
-        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        Title="MainWindow"
-        Width="525"
-        Height="350">
-    <Grid>
-        <StackPanel>
-            <Button Name="btnMsmq" Content="Msmq" Click="btnMsmq_Click" />
-            <Button Name="btnSockets" Content="Sockets" />
-            <Button Name="btnRabbit"
-                    Click="BtnRabbitClick"
-                    Content="Rabbit" />
-            <Button Name="btnRabbitProto" Content="Rabbit Proto"  />
-        </StackPanel>
-    </Grid>
-</Window>
--- a/Messaging/Client/MainWindow.xaml.cs	Wed Mar 21 22:09:18 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Messaging;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-using Common;
-using RabbitMQ.Client;
-
-namespace Client
-{
-    /// <summary>
-    /// Interaction logic for MainWindow.xaml
-    /// </summary>
-    public partial class MainWindow : Window
-    {
-        public const int MessageCount = 10000;
-
-        public MainWindow()
-        {
-            InitializeComponent();
-        }
-
-        private void BtnRabbitClick(object sender, RoutedEventArgs e)
-        {
-            Task.Factory.StartNew(() =>
-            {
-                var cf = new ConnectionFactory {Address = "localhost:" + Settings.RabbitPortNumber};
-
-                using (var conn = cf.CreateConnection())
-                using (var channel = conn.CreateModel())
-                {
-                    for (var i = 0; i < MessageCount; i++)
-                    {
-                        channel.BasicPublish("amq.direct", Settings.RabbitQueueName, null,
-                                             Encoding.UTF8.GetBytes("hello from the client!"));
-                    }
-                }
-            });
-        }
-
-        private void btnMsmq_Click(object sender, RoutedEventArgs e)
-        {
-            Task.Factory.StartNew(() =>
-            {
-                var msMq 
-                    = !MessageQueue.Exists(Settings.MsmqQueueName) 
-                    ? MessageQueue.Create(Settings.MsmqQueueName) 
-                    : new MessageQueue(Settings.MsmqQueueName);
-
-                try
-                {
-                    for (var i = 0; i < MessageCount; i++)
-                    {
-                        msMq.Send("Sending data to MSMQ at " + DateTime.Now.ToString());
-                    }
-                }
-                catch (MessageQueueException ee)
-                {
-                    Console.Write(ee.ToString());
-                }
-                catch (Exception eee)
-                {
-                    Console.Write(eee.ToString());
-                }
-                finally
-                {
-                    msMq.Close();
-                }
-            });
-        }
-    }
-}
\ No newline at end of file
--- a/Messaging/Client/Sockets/AsynchronousClient.cs	Wed Mar 21 22:09:18 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,187 +0,0 @@
-using System;
-using System.Net;
-using System.Net.Sockets;
-using System.Text;
-using System.Threading;
-
-namespace Client.Sockets
-{
-    public class AsynchronousClient
-    {
-        // The port number for the remote device.
-        private const int Port = 11000;
-
-        // ManualResetEvent instances signal completion.
-        private static readonly ManualResetEvent connectDone =
-            new ManualResetEvent(false);
-
-        private static readonly ManualResetEvent sendDone =
-            new ManualResetEvent(false);
-
-        private static readonly ManualResetEvent receiveDone =
-            new ManualResetEvent(false);
-
-        // The response from the remote device.
-        private static String response = String.Empty;
-
-        private static void StartClient()
-        {
-            // Connect to a remote device.
-            try
-            {
-                // Establish the remote endpoint for the socket.
-                // The name of the 
-                // remote device is "host.contoso.com".
-                var ipHostInfo = Dns.GetHostEntry("host.contoso.com");
-                var ipAddress = ipHostInfo.AddressList[0];
-                var remoteEP = new IPEndPoint(ipAddress, Port);
-
-                // Create a TCP/IP socket.
-                var client = new Socket(
-                    AddressFamily.InterNetwork,
-                    SocketType.Stream, 
-                    ProtocolType.Tcp);
-
-                // Connect to the remote endpoint.
-                client.BeginConnect(
-                    remoteEP,
-                    ConnectCallback, 
-                    client);
-                
-                connectDone.WaitOne();
-
-                // Send test data to the remote device.
-                Send(client, "This is a test<EOF>");
-                sendDone.WaitOne();
-
-                // Receive the response from the remote device.
-                Receive(client);
-                receiveDone.WaitOne();
-
-                // Write the response to the console.
-                Console.WriteLine("Response received : {0}", response);
-
-                // Release the socket.
-                client.Shutdown(SocketShutdown.Both);
-                client.Close();
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-            }
-        }
-
-        private static void ConnectCallback(IAsyncResult ar)
-        {
-            try
-            {
-                // Retrieve the socket from the state object.
-                var client = (Socket) ar.AsyncState;
-
-                // Complete the connection.
-                client.EndConnect(ar);
-
-                Console.WriteLine(
-                    "Socket connected to {0}",
-                    client.RemoteEndPoint);
-
-                // Signal that the connection has been made.
-                connectDone.Set();
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-            }
-        }
-
-        private static void Receive(Socket client)
-        {
-            try
-            {
-                // Create the state object.
-                var state = new StateObject {WorkSocket = client};
-
-                // Begin receiving the data from the remote device.
-                client.BeginReceive(state.Buffer, 0, StateObject.BufferSize, 0,
-                                    ReceiveCallback, state);
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-            }
-        }
-
-        private static void ReceiveCallback(IAsyncResult ar)
-        {
-            try
-            {
-                // Retrieve the state object and the client socket 
-                // from the asynchronous state object.
-                var state = (StateObject) ar.AsyncState;
-                var client = state.WorkSocket;
-
-                // Read data from the remote device.
-                var bytesRead = client.EndReceive(ar);
-
-                if (bytesRead > 0)
-                {
-                    // There might be more data, so store the data received so far.
-                    state.Sb.Append(Encoding.ASCII.GetString(state.Buffer, 0, bytesRead));
-
-                    // Get the rest of the data.
-                    client.BeginReceive(state.Buffer, 0, StateObject.BufferSize, 0,
-                                        ReceiveCallback, state);
-                }
-                else
-                {
-                    // All the data has arrived; put it in response.
-                    if (state.Sb.Length > 1)
-                    {
-                        response = state.Sb.ToString();
-                    }
-                    // Signal that all bytes have been received.
-                    receiveDone.Set();
-                }
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-            }
-        }
-
-        private static void Send(Socket client, String data)
-        {
-            // Convert the string data to byte data using ASCII encoding.
-            var byteData = Encoding.ASCII.GetBytes(data);
-
-            // Begin sending the data to the remote device.
-            client.BeginSend(
-                byteData, 
-                0, 
-                byteData.Length, 
-                0,
-                SendCallback, 
-                client);
-        }
-
-        private static void SendCallback(IAsyncResult ar)
-        {
-            try
-            {
-                // Retrieve the socket from the state object.
-                var client = (Socket) ar.AsyncState;
-
-                // Complete sending the data to the remote device.
-                var bytesSent = client.EndSend(ar);
-                Console.WriteLine("Sent {0} bytes to server.", bytesSent);
-
-                // Signal that all bytes have been sent.
-                sendDone.Set();
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-            }
-        }
-    }
-}
\ No newline at end of file
--- a/Messaging/Client/Sockets/StateObject.cs	Wed Mar 21 22:09:18 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-using System.Net.Sockets;
-using System.Text;
-
-namespace Client.Sockets
-{
-    // State object for receiving data from remote device.
-    public class StateObject
-    {
-        // Size of receive buffer
-        public const int BufferSize = 256;
-
-        // Receive buffer
-        public byte[] Buffer = new byte[BufferSize];
-
-        // Received data string
-        public StringBuilder Sb = new StringBuilder();
-
-        // Client socket
-        public Socket WorkSocket;
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Messaging/Client/UI/MainWindow.xaml	Wed Mar 21 22:26:48 2012 +0000
@@ -0,0 +1,46 @@
+<metro:Window x:Class="Client.UI.MainWindow"
+              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+              xmlns:metro="http://schemas.codeplex.com/elysium/theme"
+              Title="Messaging Client"
+              Width="250"
+              Height="350"
+              Icon="upload.ico">
+    <TabControl Margin="{Binding Source={x:Static metro:Parameters.Instance}, Path=BoldPadding, Mode=OneWay}">
+        <TabItem Header="postman">
+            <Grid HorizontalAlignment="Center">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="*" />
+                </Grid.ColumnDefinitions>
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="*" />
+                    <RowDefinition Height="*" />
+                    <RowDefinition Height="*" />
+                    <RowDefinition Height="*" />
+                </Grid.RowDefinitions>
+                <Button Name="btnMsmq"
+                        Grid.Row="0"
+                        Grid.Column="0"
+                        Margin="10"
+                        Click="btnMsmq_Click"
+                        Content="Msmq" />
+                <Button Name="btnRabbit"
+                        Grid.Row="1"
+                        Grid.Column="0"
+                        Margin="10"
+                        Click="BtnRabbitClick"
+                        Content="RabbitMq" />
+                <Button Name="btnZeroMq"
+                        Grid.Row="2"
+                        Grid.Column="0"
+                        Margin="10"
+                        Content="0MQ" Click="btnZeroMq_Click" />
+                <Button Name="btnSockets"
+                        Grid.Row="3"
+                        Grid.Column="0"
+                        Margin="10"
+                        Content="Send All" Click="btnSockets_Click" />
+            </Grid>
+        </TabItem>
+    </TabControl>
+</metro:Window>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Messaging/Client/UI/MainWindow.xaml.cs	Wed Mar 21 22:26:48 2012 +0000
@@ -0,0 +1,82 @@
+using System;
+using System.Messaging;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using Common;
+using RabbitMQ.Client;
+
+namespace Client.UI
+{
+    /// <summary>
+    /// Interaction logic for MainWindow.xaml
+    /// </summary>
+    public partial class MainWindow
+    {
+        public const int MessageCount = 10000;
+
+        public MainWindow()
+        {
+            InitializeComponent();
+        }
+
+        private void BtnRabbitClick(object sender, RoutedEventArgs e)
+        {
+            Task.Factory.StartNew(() =>
+            {
+                var cf = new ConnectionFactory {Address = "localhost:" + Settings.RabbitPortNumber};
+
+                using (var conn = cf.CreateConnection())
+                using (var channel = conn.CreateModel())
+                {
+                    for (var i = 0; i < MessageCount; i++)
+                    {
+                        channel.BasicPublish("amq.direct", Settings.RabbitQueueName, null,
+                                             Encoding.UTF8.GetBytes("hello from the client!"));
+                    }
+                }
+            });
+        }
+
+        private void btnMsmq_Click(object sender, RoutedEventArgs e)
+        {
+            Task.Factory.StartNew(() =>
+            {
+                var msMq 
+                    = !MessageQueue.Exists(Settings.MsmqQueueName) 
+                    ? MessageQueue.Create(Settings.MsmqQueueName) 
+                    : new MessageQueue(Settings.MsmqQueueName);
+
+                try
+                {
+                    for (var i = 0; i < MessageCount; i++)
+                    {
+                        msMq.Send("Sending data to MSMQ at " + DateTime.Now.ToString());
+                    }
+                }
+                catch (MessageQueueException ee)
+                {
+                    Console.Write(ee.ToString());
+                }
+                catch (Exception eee)
+                {
+                    Console.Write(eee.ToString());
+                }
+                finally
+                {
+                    msMq.Close();
+                }
+            });
+        }
+
+        private void btnZeroMq_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        private void btnSockets_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+    }
+}
\ No newline at end of file
Binary file Messaging/Client/UI/upload.ico has changed