/// <summary> /// Subscription for mission modification /// </summary> /// <param name="es">Subscriptiob object</param> /// <param name="callback">callback for telemetry subscription</param> public void SubscribeMission(ObjectModificationSubscription es, System.Action <Mission> callback) { UnsubscribeAll(); _objectNotificationSubscription = es; _eventSubscriptionWrapper.ObjectModificationSubscription = _objectNotificationSubscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connect.AuthorizeHciResponse.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connect.Executor.Submit <SubscribeEventResponse>(requestEvent); var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, _getObjectNotificationHandler <Mission>( (token, exception, mission) => { if (token == ModificationType.MT_UPDATE) { _messageReceived(mission); } } ), _eventSubscriptionWrapper); _notificationListener.AddSubscription(st); tokens.Add(st); _callback = callback; }
/// <summary> /// Example how to activate subscription for server log messages /// </summary> /// <param name="es"></param> /// <param name="callback"></param> public void SubscribeLog(ObjectModificationSubscription es, System.Action <VehicleLogEntry> callback) { _callback = callback; _objectNotificationSubscription = es; _eventSubscriptionWrapper.ObjectModificationSubscription = _objectNotificationSubscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connect.AuthorizeHciResponse.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connect.Executor.Submit <SubscribeEventResponse>(requestEvent); var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, _getObjectNotificationHandler <VehicleLogEntry>( (token, exception, log) => { if (token == ModificationType.MT_CREATE) { _oneMessageReceived(log); } } ), _eventSubscriptionWrapper); _notificationListener.AddSubscription(st); _callback = callback; }
/// <summary> /// Example how to activate subscription o vehicle modifications /// </summary> /// <param name="es">ObjectModification with vehicle object id</param> /// <param name="callBack">callback with received event</param> public void SubscribeVehicle(ObjectModificationSubscription es, System.Action <Vehicle> callBack) { _objectNotificationSubscription = es; _eventSubscriptionWrapper.ObjectModificationSubscription = _objectNotificationSubscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connect.AuthorizeHciResponse.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connect.Executor.Submit <SubscribeEventResponse>(requestEvent); var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, _getObjectNotificationHandler <Vehicle>( (token, exception, vehicle) => { if (token == ModificationType.MT_UPDATE && _vehicleList.ContainsKey(vehicle.Id)) { _messageReceived(vehicle, _vehicleList[vehicle.Id]); } } ), _eventSubscriptionWrapper); _notificationListener.AddSubscription(st); tokens.Add(st); AddVehicleIdTolistener(es.ObjectId, callBack); }
public void SubscribeVehicle(System.Action <ClientVehicleDTO, ModificationTypeDTO> callBack) { var subscription = new ObjectModificationSubscription(); subscription.ObjectType = "Vehicle"; _eventSubscriptionWrapper.ObjectModificationSubscription = subscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connectionService.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connectionService.Submit <SubscribeEventResponse>(requestEvent); if (responce.Exception != null) { logger.Error(responce.Exception); throw new Exception("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 == ModificationType.MT_UPDATE || token == ModificationType.MT_CREATE) { var newCvd = new ClientVehicleDTO() { VehicleId = vehicle.Id, Name = vehicle.Name, TailNumber = vehicle.SerialNumber }; _messageReceived(callBack, newCvd, ModificationTypeDTO.UPDATED); } else { var newCvd = new ClientVehicleDTO() { VehicleId = vehicleId, Name = string.Empty, TailNumber = string.Empty }; _messageReceived(callBack, newCvd, ModificationTypeDTO.DELETED); } }), _eventSubscriptionWrapper); _connectionService.NotificationListener.AddSubscription(st); tokens.Add(st); }
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); }
/// <summary> /// Create subscribtion to change the selected vehicle /// </summary> /// <param name="handler">Handler for new vehicle tail number</param> /// <returns>Returns subscription id or null if error is raised</returns> public int SubscribeSelectedVehicleChange(System.Action <ClientVehicleDto> handler) { //get selected vehicle id from mission preferences ObjectModificationSubscription missionPrefSubscription = new ObjectModificationSubscription { ObjectType = InvariantNames.GetInvariantName <MissionPreference>() }; EventSubscriptionWrapper subscriptionWrapper = new EventSubscriptionWrapper { ObjectModificationSubscription = missionPrefSubscription }; var response = _connectionService.Execute <SubscribeEventResponse>( new SubscribeEventRequest() { ClientId = _connectionService.GetClientId(), Subscription = subscriptionWrapper, }); _connectionService.NotificationListener.AddSubscription(new SubscriptionToken(response.SubscriptionId, (notif) => { var prefs = notif.Event.ObjectModificationEvent.Object.MissionPreference; if (prefs.Name.Equals(PREF_NAME)) { int?id = missionPreferenceToVehicleId(prefs, _connectionService.GetUser().Id); if (id != null) { var v = getVehicleById(id.Value); if (v != null) { handler(new ClientVehicleDto() { Name = v.Name, VehicleId = v.Id }); return; } } handler(null); } }, subscriptionWrapper)); return(response.SubscriptionId); }
public MainViewModel(VehicleService vs, VehicleListener vl, MapViewModel mp, TelemetryListener tl, CommandService cs, MissionService ms, RouteService rs, VehicleCommand vc) { Mapper.Initialize(cfg => { cfg.CreateMap <ServiceTelemetryDTO, ClientTelemetry>(); }); logger.LogInfoMessage("Main window initialized"); MapViewModel = mp; _vehicleService = vs; _commandService = cs; _missionService = ms; _routeService = rs; _vehicleCommand = vc; try { ClientVehicle = new ClientVehicle(); ClientVehicle.Vehicle = vs.GetVehicleByName(Settings.Default.UgcsDroneProfileName); ClientVehicle.Telemetry.Vehicle = ClientVehicle.Vehicle; var subscription = new ObjectModificationSubscription(); subscription.ObjectId = ClientVehicle.Vehicle.Id; subscription.ObjectType = "Vehicle"; _commandService.TryAcquireLock(ClientVehicle.Vehicle.Id); tl.AddVehicleIdTolistener(ClientVehicle.Vehicle.Id, TelemetryCallBack); vl.SubscribeVehicle(subscription, (e) => { //Subscribe vehicle changes }); MapViewModel.Init(ClientVehicle); NotifyOfPropertyChange(() => MissionName); NotifyOfPropertyChange(() => RouteName); NotifyOfPropertyChange(() => VehicleName); } catch (Exception e) { MessageBox.Show(e.Message); Application.Current.Shutdown(); } }
/// <summary> /// Create subscribtion to change the selected vehicle /// </summary> /// <param name="handler">Handler for new vehicle tail number</param> /// <returns>Returns subscription id or null if error is raised</returns> public int SubscribeSelectedVehicleChange(System.Action <string> handler) { //get selected vehicle id from mission preferences int result = 0; ObjectModificationSubscription missionPrefSubscription = new ObjectModificationSubscription(); missionPrefSubscription.ObjectType = InvariantNames.GetInvariantName <MissionPreference>(); EventSubscriptionWrapper subscriptionWrapper = new EventSubscriptionWrapper(); subscriptionWrapper.ObjectModificationSubscription = missionPrefSubscription; var response = _connectionService.Execute <SubscribeEventResponse>( new SubscribeEventRequest() { ClientId = _connectionService.ClientId, Subscription = subscriptionWrapper, }); result = response.SubscriptionId; _connectionService.NotificationListener.AddSubscription(new SubscriptionToken(response.SubscriptionId, (notif) => { var prefs = notif.Event.ObjectModificationEvent.Object.MissionPreference; int?id = missionPreferenceToVehicleId(prefs, _connectionService.User.Id); if (id != null) { string tailNum = getVehicleTailNumberById(id.Value); if (tailNum != null) { handler(tailNum); } } }, subscriptionWrapper)); return(response.SubscriptionId); }