Beispiel #1
0
        public POCViewModel(IWebSocketClient client, string clientName, BoundingBoxRequest bbr, string clientIndex)
        {
            this.client     = client;
            this.ClientName = clientName;
            IDToEntity      = new Dictionary <string, Entity>();

            triggerStatisticsCollector        = new NumberStatisticsCollector();
            redisStatisticsCollector          = new NumberStatisticsCollector();
            entitiesAmountStatisticsCollector = new NumberStatisticsCollector();

            csvExporter = new CsvHelperCsvExporter(clientIndex);

            generator = new ZoomChangeGenerator(this, bbr);
            generator.Start();

            workQueue = new BlockingCollection <DistributionWorkItem>();
            workers   = new List <DistributionWorker>();

            for (int i = 0; i < ConfigData.Instance.Workers; i++)
            {
                var worker = new DistributionWorker(client, triggerStatisticsCollector, redisStatisticsCollector, entitiesAmountStatisticsCollector, workQueue);
                workers.Add(worker);
                worker.Start();
            }
        }
Beispiel #2
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 ZoomChangeGenerator(POCViewModel vm, BoundingBoxRequest bbr)
 {
     this.vm = vm;
     this.boundingBoxRequest = bbr;
 }
Beispiel #4
0
 public FeatureCollection GetStates(BoundingBoxRequest request)
 {
     return(Repository.GetStates(ConvertBingBoundingBox(request.bounds), request.zoom));
 }
Beispiel #5
0
 public void ChangeZoom(BoundingBoxRequest boundingBox)
 {
     client.Publish("setClientState", boundingBox);
 }