コード例 #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 virtual IActionResult UpdateMemberLocation(Guid teamId, Guid memberId, [FromBody] MemberLocation memberLocation)
 {
     locationCache.Put(teamId, memberLocation);
     return(this.Ok(memberLocation));
 }