Exemple #1
0
        public Subscriber(string[] connections, string subscription = "")
        {
            _socket = new SubscribeSocket();

            foreach (string connection in connections)
            {
                _socket.Connect(connection);
            }
            _socket.Subscribe(subscription);
            Thread.Sleep(100); // time to connect

            _db = new DBManager();
        }
Exemple #2
0
        public static void Execute(string[] args)
        {
            string[] values = args;
            if (values.Length != 3)
            {
                throw new ArgumentException("Invalid number parameters.");
            }
            switch (values[1].Trim().ToLower())
            {
            case "publisher":
                using (var s = new PublishSocket())
                {
                    s.Bind(values[2]);
                    int i = 0;
                    while (true)
                    {
                        byte[] b = Encoding.ASCII.GetBytes("Publish Counter is " + ++i);
                        s.Send(b);
                        Console.Write(".");
                        Thread.Sleep(2000);
                    }
                }
                break;

            case "subscriber":
                using (var s = new SubscribeSocket())
                {
                    //Needs to match the first portion of the message being received.
                    s.Subscribe("Publish Counter");
                    s.Connect(values[2]);
                    while (true)
                    {
                        byte[] b = s.Receive();
                        if (b != null)
                        {
                            Console.WriteLine("Received: " + Encoding.ASCII.GetString(b));
                        }
                        else
                        {
                            Console.WriteLine("x");
                        }
                    }
                }
                break;
            }
        }
Exemple #3
0
        public void _socketfun()
        {
            _requestSocket = new RequestSocket();
            _requestSocket.Connect("tcp://" + Global.Instance.NNFConIp + ":" + Global.Instance.NNFConPUBPort);

            _subscribeSocket = new SubscribeSocket();
            _subscribeSocket.Connect("tcp://" + Global.Instance.NNFConIp + ":" + Global.Instance.NNFConSUBPort);



            long client_Autoid = Global.Instance.ClientId - 100;

            _subscribeSocket.Subscribe(BitConverter.GetBytes((short)MessageType.LOGIN).Concat(BitConverter.GetBytes(Global.Instance.ClientId)).ToArray());



            dllevent += new dll(checkCase);

            _CTS = new CancellationTokenSource();
        }
Exemple #4
0
        public void Connect(EventHandler handler)
        {
            // Request our id from the server.
            interaction.Connect(url + ":8889");
            Request(req_register);

            // Connection must be made before requesting access or otherwise
            // we may miss some key events that have already been sent by the
            // time we connected.
            Console.WriteLine("Accessing...");
            world.Subscribe(id);
            world.Connect(url + ":8888");
            // `Connected` doesn't mean we are actually fully listening. Start
            // the listen thread and then wait 500ms before requesting access
            this.connected    = true;
            this.listenThread = new Thread(() => ListenProc(handler));
            this.listenThread.Start();
            Thread.Sleep(500);

            // Request access from the world server.
            Request(req_access);
            Console.WriteLine("Connected with id " + id);
        }
Exemple #5
0
 public Cacher()
 {
     NN.SetSockOpt(sub.SocketID, SocketOption.RCVTIMEO, 100);
     sub.Subscribe("");
 }
Exemple #6
0
        public static void Execute()
        {
            Console.WriteLine("Executing pubsub test ");
            int receiveCount = 0;
            var clientThread = new Thread(
                () =>
            {
                var subscriber = new SubscribeSocket();
                subscriber.Connect(InprocAddress);
                subscriber.Subscribe("TestMessage");

                byte[] streamOutput = new byte[BufferSize];
                while (true)
                {
                    var sw = Stopwatch.StartNew();
                    for (int i = 0; i < Iter; i++)
                    {
                        int read     = 0;
                        streamOutput = subscriber.Receive();
                        read         = streamOutput.Length;
                        //using (var stream = subscriber.ReceiveStream())
                        //    while (stream.Length != stream.Position)
                        //    {
                        //        read += stream.Read(streamOutput, 0, streamOutput.Length);
                        //        var message = Encoding.ASCII.GetString(streamOutput, 0, read);
                        //        Trace.Assert(message.StartsWith("TestMessage"));
                        //
                        //        break;
                        //    }

                        ++receiveCount;
                    }
                    sw.Stop();
                    var secondsPerSend = sw.Elapsed.TotalSeconds / (double)Iter;
                    Console.WriteLine("Time {0} us, {1} per second, {2} mb/s ",
                                      (int)(secondsPerSend * 1000d * 1000d),
                                      (int)(1d / secondsPerSend),
                                      (int)(DataSize * 2d / (1024d * 1024d * secondsPerSend)));
                }
            });

            clientThread.Start();


            {
                var publisher = new PublishSocket();
                publisher.Bind(InprocAddress);
                Thread.Sleep(100);
                var sw        = Stopwatch.StartNew();
                int sendCount = 0;
                var text      = "TestMessage" + new string('q', 10);
                var data      = Encoding.ASCII.GetBytes(text);
                while (sw.Elapsed.TotalSeconds < 10)
                {
                    publisher.Send(data);
                    ++sendCount;
                }
                Thread.Sleep(100);
                clientThread.Abort();

                Console.WriteLine("Send count {0} receive count {1}", sendCount, receiveCount);
                publisher.Dispose();
            }
        }
Exemple #7
0
        public void RecieveDataAsClient()
        {
            try
            {
                Task.Factory.StartNew(() =>
                {
                    while (!_ctsCancellationTokenSource.IsCancellationRequested)
                    {
                        byte[] _IncomingData = _subscribeSocket.ReceiveImmediate();

                        if (_IncomingData == null)
                        {
                            continue;
                        }


                        byte[] buffer = _IncomingData.Skip(10).Take(_IncomingData.Length - 2).ToArray();

                        //if ((MessageType)BitConverter.ToInt16(_IncomingData, 0) != MessageType.HEARTBEAT)
                        //{
                        //    cout = cout + 1;
                        //    eDataUpdate.Invoke(cout.ToString());
                        //}
                        switch ((MessageType)BitConverter.ToInt16(_IncomingData, 0))
                        {
                        case MessageType.ORDER:
                            {
                                //NNFPktCracker(buffer);
                                short TransactionCode = 0;
                                var MsgHeader         = (Message_Header)DataPacket.RawDeserialize(buffer.Skip(0).Take(40).ToArray(), typeof(Message_Header));
                                TransactionCode       = IPAddress.HostToNetworkOrder(MsgHeader.TransactionCode);
                                checkCase(TransactionCode, buffer);

                                break;
                            }

                        case MessageType.ORDERRej:
                            {
                                ORDERRej(buffer);
                                break;
                            }

                        case MessageType.LOGIN:
                            {
                                NNFInOut.Instance.SIGN_ON_REQUEST_OUT(buffer);

                                long client_Autoid = Global.Instance.ClientId - 100;
                                _subscribeSocket.Subscribe(
                                    BitConverter.GetBytes((short)MessageType.ORDERRej).Concat(BitConverter.GetBytes(Global.Instance.ClientId)).ToArray());

                                _subscribeSocket.Subscribe(
                                    BitConverter.GetBytes((short)MessageType.MESSAGE).Concat(BitConverter.GetBytes(Global.Instance.ClientId)).ToArray());

                                _subscribeSocket.Subscribe(
                                    BitConverter.GetBytes((short)MessageType.HEARTBEAT).Concat(BitConverter.GetBytes(0)).ToArray());

                                _subscribeSocket.Subscribe(
                                    BitConverter.GetBytes((short)MessageType.ORDER).Concat(BitConverter.GetBytes(Global.Instance.ClientId)).ToArray());

                                _subscribeSocket.Subscribe(
                                    BitConverter.GetBytes((short)MessageType.ORDER).Concat(BitConverter.GetBytes(client_Autoid)).ToArray());
                                _subscribeSocket.Subscribe(
                                    BitConverter.GetBytes((short)MessageType.ORDERRej).Concat(BitConverter.GetBytes(client_Autoid)).ToArray());
                                _subscribeSocket.Subscribe(
                                    BitConverter.GetBytes((short)MessageType.MESSAGE).Concat(BitConverter.GetBytes(client_Autoid)).ToArray());

                                Global.LastTime = System.DateTime.Now;
                                break;
                            }

                        case MessageType.MESSAGE:
                            {
                                MESSAGE(buffer);
                                break;
                            }

                        case MessageType.HEARTBEAT:
                            {
                                HeartBeat(buffer);
                                Global.LastTime = System.DateTime.Now;
                                break;
                            }

                        default:
                            MessageBox.Show("Some invalid packet recieved from Server Message Code " + "Error ");
                            break;
                        }


                        _ctsCancellationTokenSource.Token.ThrowIfCancellationRequested();
                    }
                }, _ctsCancellationTokenSource.Token);
            }
            catch (OperationCanceledException e)
            {
                Console.WriteLine("Cancellation invoked");
            }
            catch (AggregateException e)
            {
                if (e.InnerException is OperationCanceledException)
                {
                    if (_requestSocket != null)
                    {
                        _requestSocket.Dispose();
                    }
                    if (_subscribeSocket != null)
                    {
                        _subscribeSocket.Dispose();
                    }
                }
                else
                {
                    Console.WriteLine("Some unexpected exception ");
                }
            }
            catch (Exception Ex)
            {
                Console.WriteLine("Exception Raised from Index " + "  " + Ex.Message);
            }
        }