Mercurial > silverbladetech
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