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); }
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); }