public void Client_prevents_times_out()
        {
            var clientConfig = new MqConfig
            {
                Ip            = Config.Ip,
                Port          = Config.Port,
                PingFrequency = 100
            };


            Client = new MqClient <SimpleMqSession, MqConfig>(clientConfig);

            Config.PingTimeout = 200;
            Server             = new MqServer <SimpleMqSession, MqConfig>(Config);


            Client.Closed += (sender, args) =>
            {
                if (args.CloseReason == SocketCloseReason.TimeOut)
                {
                    TestStatus.Set();
                }
                else
                {
                    LastException = new Exception("Client closed for reason other than timeout.");
                }
            };

            StartAndWait(false, 1500);

            if (TestStatus.IsSet)
            {
                throw new Exception("Client timed out.");
            }
        }
        public void ConnectMqServer_ReadConfiSettings()
        {
            _server = new MqServer("RabbitMQ.xml", 10000, 120000);
            string result = _server.ReadConfigSettings("ConnectionString");

            Assert.AreEqual("host=localhost", result);
        }
Пример #3
0
        static void StartServer()
        {
            ServerOptions serverOptions = ServerOptions.CreateDefault();

            serverOptions.Hosts[0].Port = 48050;

            ServerBuilder builder = new ServerBuilder();

            builder.LoadFromFile("options.json");

            builder.AddAuthenticator(new ClientAuthenticator());
            builder.AddAuthorization(new Authorization());
            builder.AddDefaultDeliveryHandler(new DeliveryHandler());
            builder.AddDefaultChannelHandler(new ChannelHandler());
            builder.AddDefaultChannelAuthenticator(new ChannelAuthenticator());

            TwinoServer twinoServer = new TwinoServer(serverOptions);

            MqServer server = builder.CreateServer();

            twinoServer.UseMqServer(server);
            twinoServer.Start();

            Console.WriteLine("Server started");
            _server = server;
        }
Пример #4
0
        public async Task <bool> CanCreateChannel(MqClient client, MqServer server, string channelName)
        {
            bool grant = client.Type.Equals("producer");

            Console.WriteLine("Can create new channel: " + grant);
            return(await Task.FromResult(grant));
        }
        public void Client_times_out_after_server_dropped_session()
        {
            Config.PingTimeout = 500;
            Client             = new MqClient <SimpleMqSession, MqConfig>(Config);


            Server = new MqServer <SimpleMqSession, MqConfig>(Config);

            Server.Connected += (sender, args) => { args.Session.Socket.Close(); };


            Client.Closed += (sender, args) =>
            {
                if (args.CloseReason == SocketCloseReason.TimeOut)
                {
                    TestStatus.Set();
                }
                else
                {
                    LastException = new Exception("Client closed for reason other than timeout.");
                }
            };

            StartAndWait(false, 1000);

            if (TestStatus.IsSet == false)
            {
                throw new Exception("Socket did not timeout.");
            }
        }
Пример #6
0
 public RequestResponseServer(MqServer server)
 {
     if (!ServerUtils.IsPortOpen(server.HostIp, server.Port, TimeSpan.FromSeconds(2)))
     {
         throw new PortIsInUseException($"{server.GetAddress()} is in use.");
     }
     responseSocketConnectionString = server.GetAddress();
 }
 public PageTemplate(Frame mainFrame, Int32 pageId, MqServer mqServer)
 {
     InitializeComponent();
     this.mainFrame = mainFrame;
     App.localStorage.currPageId = pageId;
     this.mqServer = mqServer;
     FrameUtil.RemoveBackEntry(mainFrame);
     initControl(pageId);
     Unloaded += PageTemplate_UnLoaded;
 }
Пример #8
0
 public HistoricalDataServer(MqServer server, IHistoricalDataBroker broker)
 {
     if (!ServerUtils.IsPortOpen(server.HostIp, server.Port, TimeSpan.FromSeconds(2)))
     {
         throw new PortIsInUseException($"{server.GetAddress()} is in use.");
     }
     connectionString = server.GetAddress();
     this.broker      = broker ?? throw new ArgumentNullException(nameof(broker), $"{nameof(broker)} cannot be null");
     this.broker.HistoricalDataArrived += BrokerHistoricalDataArrived;
 }
Пример #9
0
 public MqConnectionHandler(MqServer server)
 {
     _server             = server;
     _serverHandler      = new ServerMessageHandler(server);
     _channelHandler     = new ChannelMessageHandler(server);
     _clientHandler      = new ClientMessageHandler(server);
     _responseHandler    = new ResponseMessageHandler(server);
     _acknowledgeHandler = new AcknowledgeMessageHandler(server);
     _instanceHandler    = new InstanceMessageHandler(server);
 }
Пример #10
0
        public CFrame(DControl currDControl, Cfg cfg, MqServer mqServer)
        {
            InitializeComponent();
            this.currDControl = currDControl;
            this.cfg          = cfg;
            this.mqServer     = mqServer;
            mainFrame.Tag     = currDControl;

            initControl();
            Unloaded += UserControl_UnLoaded;
        }
 public CAudio(DControl currDControl, DPage dPage, Cfg appCfg, string audioUrl, string audioCoverUrl, MqServer mqServer)
 {
     this.currDControl  = currDControl;
     this.mqServer      = mqServer;
     this.audioUrl      = audioUrl;
     this.audioCoverUrl = audioCoverUrl;
     InitializeComponent();
     mqServer.sendMsgEvent += Client_ReceiveMsgEvent;
     loadPageData();
     Unloaded += this_Unloaded;
 }
Пример #12
0
        public EquityUpdateServer(MqServer server)
        {
            if (!ServerUtils.IsPortOpen(server.HostIp, server.Port, TimeSpan.FromSeconds(2)))
            {
                throw new PortIsInUseException($"{server.GetAddress()} is in use.");
            }



            routerConnectionString = server.GetAddress();
            routerSocket           = new RouterSocket();
        }
Пример #13
0
        public ApplicationController(MqServer mqServer, MessageProcessor messageProcessor)
        {
            _strategiesMap = new ConcurrentDictionary <string, Dictionary <string, ClientMqParameters> >();

            _mqServer         = mqServer;
            _messageProcessor = messageProcessor;

            // Hook MQ Server Events
            RegisterMqServerEvents();

            // Hooks MessageProcessor Events
            RegisterMessageProcessorEvents();
        }
 public PageTemplate(Frame mainFrame, Int32 pageId, Boolean isTransparentDialog, MqServer mqServer)
 {
     InitializeComponent();
     this.mainFrame = mainFrame;
     FrameUtil.RemoveBackEntry(mainFrame);
     Background = Brushes.Transparent;
     if (!isTransparentDialog)
     {
         showDefaultBackgroundInCFrameDialog = true;
     }
     this.mqServer = mqServer;
     initControl(pageId);
     Unloaded += PageTemplate_UnLoaded;
 }
        public MessagesServer(MqServer server)
        {
            //if (publisher.GetAddress() == pull.GetAddress())
            //{
            //    throw new ArgumentException("Publish and request ports must be different");
            //}

            //publisherConnectionString = publisher.GetAddress();
            if (!ServerUtils.IsPortOpen(server.HostIp, server.Port, TimeSpan.FromSeconds(2)))
            {
                throw new PortIsInUseException($"{server.GetAddress()} is in use.");
            }
            pullSocketConnectionString = server.GetAddress();
        }
Пример #16
0
        public MqTestsBase(ITestOutputHelper output)
        {
            Output = output;
            Port   = FreeTcpPort();

            Config = new MqConfig
            {
                Ip   = "127.0.0.1",
                Port = Port
            };

            Server = new MqServer <SimpleMqSession, MqConfig>(Config);
            Client = new MqClient <SimpleMqSession, MqConfig>(Config);
        }
Пример #17
0
        public CVideo(DControl ctl, Boolean isDesign, Cfg cfg, StorageVideoDto storageVideoDto, MqServer mqServer)
        {
            currDControl         = ctl;
            this.cfg             = cfg;
            this.storageVideoDto = storageVideoDto;
            this.mqServer        = mqServer;
            InitializeComponent();
            mqServer.sendMsgEvent += Client_ReceiveMsgEvent;
            initSize();

            Video_Element_Init();
            Loaded                  += UserControl_Loaded;
            Unloaded                += UserControl_UnLoaded;
            Play_Button.Click       += Play_Button_Click;
            Fullscreen_Button.Click += Fullscreen_Button_Click;
        }
Пример #18
0
        public RealTimeDataServer(MqServer server, IRealTimeDataBroker broker)
        {
            if (!ServerUtils.IsPortOpen(server.HostIp, server.Port, TimeSpan.FromSeconds(2)))
            {
                throw new PortIsInUseException($"{server.GetAddress()} is in use.");
            }
            this.broker = broker ?? throw new ArgumentNullException(nameof(broker));
            this.broker.RealTimeDataArrived += BrokerRealTimeDataArrived;
            //if (publish.GetAddress() == request.GetAddress())
            //{
            //    throw new ArgumentException("Publish and request ports must be different");
            //}

            //publisherConnectionString = publish.GetAddress();

            requestConnectionString = server.GetAddress();
        }
Пример #19
0
        public void Initialize(int port)
        {
            Port = port;

            MqServerOptions mqOptions = new MqServerOptions();

            mqOptions.AllowedQueues       = new[] { MessageA.ContentType, MessageB.ContentType, MessageC.ContentType };
            mqOptions.AllowMultipleQueues = true;
            mqOptions.AcknowledgeTimeout  = TimeSpan.FromSeconds(90);
            mqOptions.MessageTimeout      = TimeSpan.FromSeconds(12);

            Server = new MqServer(mqOptions);
            Server.SetDefaultChannelHandler(new TestChannelHandler(this), null);
            Server.SetDefaultDeliveryHandler(new TestDeliveryHandler(this));
            Server.ClientHandler      = new TestClientHandler(this);
            Server.AdminAuthorization = new TestAdminAuthorization();

            Channel channel = Server.CreateChannel("ch-1");

            channel.CreateQueue(MessageA.ContentType).Wait();
            channel.CreateQueue(MessageC.ContentType).Wait();

            Channel channel0 = Server.CreateChannel("ch-0");

            channel0.CreateQueue(MessageA.ContentType).Wait();

            Channel croute = Server.CreateChannel("ch-route");

            croute.Options.Status = QueueStatus.Route;
            croute.CreateQueue(MessageA.ContentType).Wait();

            Channel cpush = Server.CreateChannel("ch-push");

            cpush.Options.Status = QueueStatus.Push;
            cpush.CreateQueue(MessageA.ContentType).Wait();

            Channel cpull = Server.CreateChannel("ch-pull");

            cpull.Options.Status = QueueStatus.Pull;
            cpull.CreateQueue(MessageA.ContentType).Wait();

            Channel cround = Server.CreateChannel("ch-round");

            cround.Options.Status = QueueStatus.RoundRobin;
            cround.CreateQueue(MessageA.ContentType).Wait();
        }
        /// <summary>
        /// Starts the server.
        /// </summary>
        /// <param name="server">The server.</param>
        /// <returns><c>true</c> if Server is successfully started, <c>false</c> otherwise.</returns>
        /// <exception cref="System.ArgumentNullException">server</exception>
        /// <exception cref="System.ArgumentOutOfRangeException"></exception>
        public bool StartServer(MqServer server)
        {
            if (server == null)
            {
                throw new ArgumentNullException(nameof(server));
            }

            INetMQServer netMqServer;

            switch (server.ServerType)
            {
            case ServerType.EquityUpdate:
                netMqServer = new EquityUpdateServer(server);
                netMqServer.StartServer();
                break;

            case ServerType.HistoricalData:
                netMqServer = new HistoricalDataServer(server, null);
                netMqServer.StartServer();
                break;

            case ServerType.InstrumentRequest:
                netMqServer = new RequestResponseServer(server);
                netMqServer.StartServer();
                break;

            case ServerType.Message:
                netMqServer = new MessagesServer(server);
                netMqServer.StartServer();
                break;

            case ServerType.RealTimeData:
                netMqServer = new EquityUpdateServer(server);
                netMqServer.StartServer();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(netMqServer.ServerRunning);
        }
        /*
         *  标准进入页面
         */
        public PageTemplate(Frame mainFrame, Int32 pageId, Boolean isMoveIn, System.Windows.Forms.Screen screen, MqServer mqServer)
        {
            InitializeComponent();
            this.mainFrame = mainFrame;
            this.screen    = screen;
            this.mqServer  = mqServer;
            FrameUtil.RemoveBackEntry(mainFrame);
            CFrameTag cFrameTag = (CFrameTag)mainFrame.Tag;

            if (cFrameTag.parentFrame != null)
            {
                Background = Brushes.Transparent;
                showDefaultBackgroundInCFrameDialog = true;
            }
            initControl(pageId);
            Unloaded += PageTemplate_UnLoaded;

            if (isMoveIn)
            {
                Loaded += moveIn;
            }
        }
Пример #22
0
        public CFrame(Frame parentFrame, DControl currDControl, Cfg cfg, System.Windows.Forms.Screen screen, MqServer mqServer)
        {
            InitializeComponent();
            this.currDControl = currDControl;
            this.cfg          = cfg;
            this.screen       = screen;
            this.mqServer     = mqServer;

            object   parentTag         = parentFrame.Tag;
            DControl parentDControl    = null;
            Border   parentCoverBorder = null;

            if (parentTag is CFrameTag)
            {
                CFrameTag tmp = (CFrameTag)parentTag;
                parentDControl    = tmp.currDControl;
                parentCoverBorder = tmp.currCoverBorder;
            }


            CFrameTag tag = new CFrameTag();

            tag.currCFrame        = mainFrame;
            tag.currDControl      = currDControl;
            tag.currCoverBorder   = CoverBorder;
            tag.parentFrame       = parentFrame;
            tag.parentDControl    = parentDControl;
            tag.parentCoverBorder = parentCoverBorder;
            mainFrame.Tag         = tag;

            initControl();
            Unloaded += UserControl_UnLoaded;

            //this.scrollViewer.PreviewTouchDown += scrollViewer_PreviewTouchDown;
            //this.scrollViewer.PreviewTouchUp += scrollViewer_PreivewTouchUp;
        }
Пример #23
0
 public ServerMessageHandler(MqServer server)
 {
     _server = server;
 }
Пример #24
0
 public ChannelMessageHandler(MqServer server)
 {
     _server = server;
 }
Пример #25
0
 public InstanceMessageHandler(MqServer server)
 {
     _server = server;
 }
Пример #26
0
 public AcknowledgeMessageHandler(MqServer server)
 {
     _server = server;
 }
        private static void MqInProcessPerformanceTests(int runs, int loops, MqMessage message, MqConfig config)
        {
            var server = new MqServer <SimpleMqSession, MqConfig>(config);

            server.Start();

            double[] totalValues = { 0, 0, 0 };

            var count        = 0;
            var sw           = new Stopwatch();
            var wait         = new AutoResetEvent(false);
            var completeTest = new AutoResetEvent(false);

            var client = new MqClient <SimpleMqSession, MqConfig>(config);

            Console.WriteLine("|   Build |   Messages | Msg Bytes | Milliseconds |    Msg/sec |     MBps |");
            Console.WriteLine("|---------|------------|-----------|--------------|------------|----------|");


            var messageSize = message.Size;

            server.IncomingMessage += (sender, args2) =>
            {
                count += args2.Messages.Count;


                if (count == runs)
                {
                    sw.Stop();
                    var mode = "Release";

#if DEBUG
                    mode = "Debug";
#endif

                    var messagesPerSecond = (int)((double)runs / sw.ElapsedMilliseconds * 1000);
                    var msgSizeNoHeader   = messageSize - 12;
                    var mbps = runs * (double)(msgSizeNoHeader) / sw.ElapsedMilliseconds / 1000;
                    Console.WriteLine("| {0,7} | {1,10:N0} | {2,9:N0} | {3,12:N0} | {4,10:N0} | {5,8:N2} |", mode, runs,
                                      msgSizeNoHeader, sw.ElapsedMilliseconds, messagesPerSecond, mbps);
                    totalValues[0] += sw.ElapsedMilliseconds;
                    totalValues[1] += messagesPerSecond;
                    totalValues[2] += mbps;


                    wait.Set();
                }
            };


            var send = new Action(() =>
            {
                count = 0;
                sw.Restart();
                for (var i = 0; i < runs; i++)
                {
                    client.Send(message);
                }
                //MqServer sv = server;
                wait.WaitOne();
                wait.Reset();
            });

            client.Connected += (sender, args) =>
            {
                for (var i = 0; i < loops; i++)
                {
                    send();
                }

                Console.WriteLine("|         |            |  AVERAGES | {0,12:N0} | {1,10:N0} | {2,8:N2} |",
                                  totalValues[0] / loops,
                                  totalValues[1] / loops, totalValues[2] / loops);
                Console.WriteLine();

                server.Stop();
                client.Close();
                completeTest.Set();
            };

            client.Connect();

            completeTest.WaitOne();
        }
        private static void StartServer(int totalMessages, int totalClients)
        {
            var server = new MqServer <SimpleMqSession, MqConfig>(new MqConfig()
            {
                Ip   = "127.0.0.1",
                Port = 2828
            });

            var builder = new MqMessageWriter((MqConfig)server.Config);

            builder.Write("COMPLETE");

            var completeMessage = builder.ToMessage(true);

            builder.Write("START");
            var startMessage = builder.ToMessage(true);

            ConcurrentDictionary <SimpleMqSession, ClientRunInfo> clientsInfo =
                new ConcurrentDictionary <SimpleMqSession, ClientRunInfo>();


            server.Connected += (sender, session) =>
            {
                var currentInfo = new ClientRunInfo()
                {
                    Session = session.Session,
                    Runs    = 0
                };
                clientsInfo.TryAdd(session.Session, currentInfo);

                if (clientsInfo.Count == totalClients)
                {
                    foreach (var mqSession in clientsInfo.Keys)
                    {
                        mqSession.Send(startMessage);
                    }
                }
            };

            server.Closed += (session, value) =>
            {
                ClientRunInfo info;
                clientsInfo.TryRemove(value.Session, out info);
            };

            server.IncomingMessage += (sender, args) =>
            {
                var clientInfo = clientsInfo[args.Session];

                // Count the total messages.
                clientInfo.Runs += args.Messages.Count;

                if (clientInfo.Runs == totalMessages)
                {
                    args.Session.Send(completeMessage);
                    args.Session.Send(startMessage);
                    clientInfo.Runs = 0;
                }
            };


            server.Start();
        }
Пример #29
0
 public CVideo(DControl ctl, Boolean isDesign, Cfg cfg, StorageVideoDto storageVideoDto, MqServer mqServer, Boolean isLinkToFullVideo)
     : this(ctl, isDesign, cfg, storageVideoDto, mqServer)
 {
     this.isLinkToFullVideo = isLinkToFullVideo;
 }
Пример #30
0
 public ClientMessageHandler(MqServer server)
 {
     _server = server;
 }