Пример #1
0
        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));
             *  }
             * }
             */
        }