public void SubscribeVehicle(System.Action <ClientVehicleDto, Enums.ModificationType> callBack)
        {
            var subscription = new ObjectModificationSubscription
            {
                ObjectType = "Vehicle"
            };

            _eventSubscriptionWrapper.ObjectModificationSubscription = subscription;

            SubscribeEventRequest requestEvent = new SubscribeEventRequest
            {
                ClientId = _connectionService.GetClientId(),

                Subscription = _eventSubscriptionWrapper
            };

            var responce = _connectionService.Submit <SubscribeEventResponse>(requestEvent);

            if (responce.Exception != null)
            {
                logger.Error(responce.Exception);
                throw new InvalidOperationException("Failed to subscribe on vehicle modifications. Try again or see log for more details.");
            }
            var subscribeEventResponse = responce.Value;

            SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, getObjectNotificationHandler <Vehicle>(
                                                             (token, vehicleId, vehicle) =>
            {
                if (token == Sdk.Protocol.Encoding.ModificationType.MT_UPDATE || token == Sdk.Protocol.Encoding.ModificationType.MT_CREATE)
                {
                    var newCvd = new ClientVehicleDto()
                    {
                        VehicleId = vehicle.Id,
                        Name      = vehicle.Name
                    };
                    messageReceived(callBack, newCvd, Enums.ModificationType.UPDATED);
                }
                else
                {
                    var newCvd = new ClientVehicleDto()
                    {
                        VehicleId = vehicleId,
                        Name      = string.Empty
                    };
                    messageReceived(callBack, newCvd, Enums.ModificationType.DELETED);
                }
            }), _eventSubscriptionWrapper);

            _connectionService.NotificationListener.AddSubscription(st);
            tokens.Add(st);
        }
Exemple #2
0
        private void refreshVehicle(ClientVehicleDto vehicle, Enums.ModificationType mtd)
        {
            bool update = false;

            if (!Vehicles.ContainsKey(vehicle.VehicleId))
            {
                update = true;
            }
            Vehicles.AddOrUpdate(vehicle.VehicleId, vehicle, (key, oldValue) =>
            {
                if (vehicle.Name != oldValue.Name)
                {
                    update = true;
                }
                return(vehicle);
            });
            if (update && OnVehicleUpdated != null)
            {
                OnVehicleUpdated(vehicle);
            }
        }
 private void messageReceived(System.Action <ClientVehicleDto, Enums.ModificationType> callback, ClientVehicleDto vehicle, Enums.ModificationType mtd)
 {
     callback(vehicle, mtd);
 }