Example #1
0
        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);
                }
            }
        }
Example #2
0
        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(',', ' ')));
        }