Mercurial > silverbladetech
diff Messaging/Server/Listeners/ZeroMqListener.cs @ 31:7d9de5746f18
Working version
author | adminsh@apollo |
---|---|
date | Thu, 22 Mar 2012 08:09:41 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Messaging/Server/Listeners/ZeroMqListener.cs Thu Mar 22 08:09:41 2012 +0000 @@ -0,0 +1,55 @@ +using System; +using System.Text; +using Common.Messages; +using GalaSoft.MvvmLight.Messaging; + +namespace Server.Listeners +{ + public class ZeroMqListener : IListener + { + public bool IsListening { get; set; } + private readonly string _zeroMqAddress; + public ZeroMqListener(string zeroMqAddress) + { + _zeroMqAddress = zeroMqAddress; + } + + public void Start() + { + if (IsListening) return; + + Messenger.Default.Send(new ZeroMqLogMessage() { Body = "Opening listener" }); + IsListening = true; + + try + { + using (var ctx = new ZMQ.Context(1)) + { + + var socket = ctx.Socket(ZMQ.REP); + socket.Bind(_zeroMqAddress); + + while (IsListening) + { + byte[] message; + socket.Recv(out message); + Messenger.Default.Send(new ZeroMqClientMessage()); + + socket.Send(Encoding.ASCII.GetBytes("")); + } + } + } + catch (Exception e) + { + Messenger.Default.Send(new ZeroMqLogMessage() { Body = e.Message }); + } + } + + public void Stop() + { + if (!IsListening) return; + IsListening = false; + Messenger.Default.Send(new ZeroMqLogMessage() { Body = "Listener closed." }); + } + } +}