public async Task SendARSMessage(VehicleArriveEvent message) { var messageJson = JsonConvert.SerializeObject(message); using EventDataBatch eventBatch = await _arrivalClient.CreateBatchAsync(); eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes(messageJson))); Console.WriteLine($"Sending ARS message {messageJson}"); await _arrivalClient.SendAsync(eventBatch); }
public async void InitializeConnection(StreamConnectionSettings settings, Func <VehicleArriveEvent, Task> arsMessageReceivedCallback, Func <VehiclePositionEvent, Task> vpMessageReceivedCallback) { var options = new MqttClientOptionsBuilder() .WithWebSocketServer(settings.ServerAddress) .WithTls() .Build(); _client.UseConnectedHandler(async e => { Console.WriteLine("### CONNECTED WITH SERVER ###"); await _client.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic(settings.ChannelName).Build()); Console.WriteLine("### SUBSCRIBED ###"); }); _client.UseApplicationMessageReceivedHandler(async eventArgs => { var stringMessage = System.Text.Encoding.UTF8.GetString(eventArgs.ApplicationMessage.Payload); var vpEvent = JsonConvert.DeserializeObject <VPEvent>(stringMessage); if (vpEvent.Event != null) { Console.WriteLine($"VP event received: {eventArgs.ApplicationMessage.Topic}"); var message = new VehiclePositionEvent(vpEvent.Event); await vpMessageReceivedCallback(message); return; } var arsEvent = JsonConvert.DeserializeObject <ARSEvent>(stringMessage); if (arsEvent.Event != null) { Console.WriteLine($"ARS event received: {eventArgs.ApplicationMessage.Topic}"); var direction = GetDirectionFromTopic(eventArgs.ApplicationMessage.Topic); var nextStop = GetNextStopFromTopic(eventArgs.ApplicationMessage.Topic); var message = new VehicleArriveEvent(arsEvent.Event, nextStop, direction); await arsMessageReceivedCallback(message); return; } }); await _client.ConnectAsync(options, CancellationToken.None); }
public Task SendARSMessage(VehicleArriveEvent message) { throw new NotImplementedException(); }