Esempio n. 1
0
        static async Task Main(string[] args)
        {
            if (args.Length < 6)
            {
                return;
            }

            POCViewModel vm         = null;
            var          rnd        = new Random(Guid.NewGuid().GetHashCode());
            var          clientName = ConfigData.Instance.ClientBaseName + rnd.Next();
            var          bbr        = new BoundingBoxRequest(name: clientName,
                                                             minLongitude: int.Parse(args[1]),
                                                             minLatitude: int.Parse(args[3]),
                                                             maxLongitude: int.Parse(args[2]),
                                                             maxLatitude: int.Parse(args[4]));

            var factory = new WebSocketClientFactory();
            var client  = factory.Create(ConfigData.Instance.Hostname, ConfigData.Instance.Port, ConfigData.Instance.ClientType);

            if (await client.InitializeAsync())
            {
                vm = new POCViewModel(client, clientName, bbr, args[0]);
                await vm.StartUpdatesListener();
            }

            await Task.Delay(int.Parse(args[5]));

            if (vm != null)
            {
                vm.Dispose();
            }

            Environment.Exit(0);
        }
        public override SocketTasks StartClient()
        {
            string conUrl = Url;

            if (conUrl.EndsWith("/"))
            {
                conUrl = conUrl.Substring(0, conUrl.Length - 1);
            }

            conUrl += "/mlapi-connection";

            client = WebSocketClientFactory.Create(conUrl);

            client.SetOnOpen(() =>
            {
                clientEventQueue.Enqueue(new ClientEvent()
                {
                    Type    = NetEventType.Connect,
                    Payload = new ArraySegment <byte>()
                });
            });

            client.SetOnClose((code) =>
            {
                clientEventQueue.Enqueue(new ClientEvent()
                {
                    Type    = NetEventType.Disconnect,
                    Payload = new ArraySegment <byte>()
                });
            });

            client.SetOnPayload((payload) =>
            {
                clientEventQueue.Enqueue(new ClientEvent()
                {
                    Type    = NetEventType.Disconnect,
                    Payload = payload
                });
            });

            client.Connect();

            return(SocketTask.Done.AsTasks());
        }