private void HandleMessage(byte[] buffer, int count, IPEndPoint remote) { IList <ISnmpMessage> messages = null; try { messages = MessageFactory.ParseMessages(buffer, 0, count, _users); } catch (Exception ex) { MessageFactoryException exception = new MessageFactoryException("Invalid message bytes found. Use tracing to analyze the bytes.", ex); exception.SetBytes(buffer); HandleException(exception); } if (messages == null) { return; } foreach (ISnmpMessage message in messages) { EventHandler <MessageReceivedEventArgs> handler = MessageReceived; handler?.Invoke(this, new MessageReceivedEventArgs(remote, message, this)); } }
private void HandleMessage(byte[] buffer, int count, IPEndPoint remote) { IList <ISnmpMessage> messages = null; //var userDictionary = new Dictionary<EngineUser, IList<ISnmpMessage>>(); try { //TODO: - A - Check implementation and backupt with test, messageReceived should be invoked per message and User //var dummyUserRegistry = new UserRegistry(); messages = MessageFactory.ParseMessages(buffer, 0, count, _users.GetAsUserRegistry()); /* * //Parse for every user * if (_users != null) * foreach (var user in _users.GetUserList()) * userDictionary.Add(user.Value, MessageFactory.ParseMessages(buffer, 0, count, user.Value.GetAsUserRegistry())); * else * userDictionary.Add(dummyUserRegistry, messages); */ } catch (Exception ex) { var exception = new MessageFactoryException("Invalid message bytes found. Use tracing to analyze the bytes.", ex); exception.SetBytes(buffer); HandleException(exception); } if (messages == null) { return; } foreach (var message in messages) { var handler = MessageReceived; handler?.Invoke(this, new MessageReceivedEventArgs(remote, message, this)); } /* * foreach (var userMessages in userDictionary) * { * foreach (var message in userMessages.Value) * { * MessageReceived?.Invoke(this, new MessageReceivedEventArgs(remote, message, this, userMessages.Key)); * } * } */ }