コード例 #1
0
        public MemberLocationEventProcessor(
            ILogger <MemberLocationEventProcessor> logger,
            IEventSubscriber eventSubscriber,
            IEventEmitter eventEmitter,
            ILocationCache locationCache
            )
        {
            this.logger            = logger;
            this.subscriber        = eventSubscriber;
            this.eventEmitter      = eventEmitter;
            this.proximityDetector = new ProximityDetector();
            this.locationCache     = locationCache;

            this.subscriber.MemberLocationRecordedEventReceived += (mlre) => {
                var memberLocations = locationCache.GetMemberLocations(mlre.TeamID);
                ICollection <ProximityDetectedEvent> proximityEvents =
                    proximityDetector.DetectProximityEvents(mlre, memberLocations, 30.0f);
                foreach (var proximityEvent in proximityEvents)
                {
                    eventEmitter.EmitProximityDetectedEvent(proximityEvent);
                }

                locationCache.Put(mlre.TeamID, new MemberLocation
                {
                    MemberID = mlre.MemberID,
                    Location = new GpsCoordinate
                    {
                        Latitude  = mlre.Latitude,
                        Longitude = mlre.Longitude
                    }
                });
            };
        }
コード例 #2
0
        public void EventProcessingRoundTrip()
        {
            MemberLocationRecordedEvent[] events =
                GenerateFakeEventList();

            SubscribeToProximityEvents();
            EnqueueEvents(events);

            bool receivedSignal = autoEvent.WaitOne(4000);

            Assert.True(receivedSignal);

            // Check with Redis to make sure we got all the locations.
            ILocationCache         locationCache  = (ILocationCache)testServer.Host.Services.GetService(typeof(ILocationCache));
            IList <MemberLocation> team2Locations = locationCache.GetMemberLocations(teamId2);

            Assert.Equal(2, team2Locations.Count);
            IList <MemberLocation> team1Locations = locationCache.GetMemberLocations(teamId1);

            Assert.Equal(2, team1Locations.Count);

            channel.Close();
            connection.Close();
            Environment.Exit(0);
        }
コード例 #3
0
 public CacheManager(ILocationCache level1Cache, ILocationCache level2Cache, LocationCreator locationCreator, ILogger <CacheManager> logger)
 {
     this.level1Cache     = level1Cache;
     this.level2Cache     = level2Cache;
     this.locationCreator = locationCreator;
     this.logger          = logger;
 }
コード例 #4
0
 public RealityController(ILocationCache locationCache,
                          ILogger <RealityController> logger)
 {
     this.locationCache = locationCache;
     this.logger        = logger;
 }
コード例 #5
0
 private LocationRepository GetItemUnderTest(ILocationApiClient apiClient, ILocationCache cache)
 {
     return(new LocationRepository(apiClient, cache));
 }
コード例 #6
0
 public LocationRepository(ILocationApiClient apiClient, ILocationCache locationCache)
 {
     _apiClient     = apiClient;
     _locationCache = locationCache;
 }
コード例 #7
0
 public LocationService(ILocationCache locationCache)
 {
     _locationCache = locationCache;
 }