[zeromq-dev] zguide / examples / C# / taskwork2.cs

Mark Kharitonov mark.kharitonov at shunra.co.il
Wed Nov 24 13:50:42 CET 2010


//  Author:     Mark Kharitonov
//  Email:      Mark.Kharitonov at shunra.co.il

using System;
using System.Text;
using System.Threading;
using ZMQ;

namespace Worker
{
  class Program
  {
    static void Main(string[] args)
    {
      using (var context = new Context(1))
      using (var receiver = context.Socket(SocketType.PULL))
      {
        receiver.Connect("tcp://localhost:5557");

        using (var sender = context.Socket(SocketType.PUSH))
        {
          sender.Connect("tcp://localhost:5558");

          using (var controller = context.Socket(SocketType.SUB))
          {
            controller.Connect("tcp://localhost:5559");
            controller.Subscribe(string.Empty, Encoding.Unicode);

            bool run = true;
            PollItem[] items = new PollItem[2];
            items[0] = receiver.CreatePollItem(IOMultiPlex.POLLIN);
            items[0].PollInHandler += (socket, revents) => ReceiverPollInHandler(socket, sender);
            items[1] = controller.CreatePollItem(IOMultiPlex.POLLIN);
            items[1].PollInHandler += delegate { run = false; };

            //  Process tasks as long as the controller does not signal the end.
            while (run)
            {
              context.Poll(items);
            }
          }
        }
      }
    }

    private static void ReceiverPollInHandler(Socket receiver, Socket sender)
    {
      var ms = receiver.Recv(Encoding.UTF8);
      var timeout = TimeSpan.FromTicks(int.Parse(ms) * 10000L);
      Console.WriteLine(ms);
      Thread.Sleep(timeout);
      sender.Send(string.Empty, Encoding.UTF8);
    }
  }
}

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20101124/57777717/attachment.htm>


More information about the zeromq-dev mailing list