internal async Task MessageLoop() { while (true) { IIOTMessage message = null; try { message = await ParseRequestAsync(); } catch (Exception ex) { if (ex is AlarmServerException) { ErrorOccured?.Invoke(this, ex); } else { Disconnected?.Invoke(this, ex); break; } } if (message != null) { MessageReceived?.Invoke(this, message); } } }
public async Task SendMessageAsync(IIOTMessage message) { StringBuilder builder = new StringBuilder(); if (message.LongParameters != null) { foreach (var parameter in message.LongParameters) { builder.Append(parameter.Key); builder.Append(':'); builder.AppendLine(parameter.Value.ToString(CultureInfo.InvariantCulture)); } } if (message.Flags != null) { foreach (var flag in message.Flags) { builder.AppendLine(flag); } } writer.WriteString(builder.ToString()); await writer.StoreAsync(); }
void SendMessageToAllSafe(IIOTMessage message) { foreach (var client in clients.Keys) { SendMessageSafe(client, message); } }
private void Client_MessageReceived(IIOTClient client, IIOTMessage message) { Dispatch(() => { var data = clients[client]; data.LastResponseTime = DateTime.Now; AddIOTMessage(message); }); }
async void SendMessageSafe(IIOTClient client, IIOTMessage message) { try { await client.SendMessageAsync(message); } catch (Exception ex) { AddEvent(ex); } }
void AddIOTMessage(IIOTMessage message) { var builder = new StringBuilder(); foreach (var parameter in message.LongParameters) { UpdateParameter(parameter); builder.Append(parameter.Key); builder.Append(": "); builder.Append(parameter.Value); builder.Append(", "); } AddEvent(new EventModel(DateTime.Now, builder.ToString().Trim(',', ' '))); }