private async void InformMessageReceived(object sender, InformRequestMessageReceivedEventArgs e)
        {
            using var scope = _serviceProvider.CreateScope();
            var store = scope.ServiceProvider.GetRequiredService <ISNMPMessageStore>();

            _logger.LogWarning("Inform version {0}: {1}", e.InformRequestMessage.Version, e.InformRequestMessage);

            var message = new SNMPMessage
            {
                Type        = SNMPMessageType.INFORM,
                Version     = (Data.Models.VersionCode)e.InformRequestMessage.Version,
                TimeStamp   = e.InformRequestMessage.TimeStamp,
                ContextName = e.InformRequestMessage.Scope.ContextName.ToString(),
                MessageId   = e.InformRequestMessage.Header.MessageId,
                Enterprise  = e.InformRequestMessage.Enterprise.ToString(),
                UserName    = e.InformRequestMessage.Parameters.UserName.ToString()
            };

            foreach (var variable in e.InformRequestMessage.Variables())
            {
                message.Variables.Add(new SNMPMessageVariable
                {
                    VariableId = variable.Id.ToString(),
                    Value      = variable.Data.ToString()
                });
            }

            await store.Add(message);
        }
示例#2
0
        public override void sendMsg(IMessage message)
        {
            SNMPMessage m = (SNMPMessage)message;

            if (m.opcode == SNMPMessage.OP.GET_REQUEST)
            {
                asyncTask = Messenger.GetAsync(SnmpVersion,
                                               agent,
                                               new OctetString(SNMPComunnity),
                                               new List <Variable> {
                    new Variable(new ObjectIdentifier(m.OID))
                });

                //GetRequestMessage request = new GetRequestMessage(Messenger.NextRequestId, SnmpVersion, SNMPComunnity, new List<Variable> { new Variable(new ObjectIdentifier(m.OID)));
                //Task rep = request.SendAsync(agent);
                //ISnmpMessage reply = request.GetResponse(timeout, receiver);
            }
            else if (m.opcode == SNMPMessage.OP.SET_REQUEST)
            {
            }
        }
        private async void InformMessageReceived(object sender, InformRequestMessageReceivedEventArgs e)
        {
            try
            {
                using var scope = _serviceProvider.CreateScope();
                var store = scope.ServiceProvider.GetRequiredService <ISNMPMessageStore>();

                _logger.LogWarning("Inform version {0}: {1}", e.InformRequestMessage.Version, e.InformRequestMessage);

                var message = new SNMPMessage
                {
                    Type        = SNMPMessageType.INFORM,
                    Version     = (VersionCode)e.InformRequestMessage.Version,
                    TimeStamp   = e.InformRequestMessage.TimeStamp,
                    ContextName = e.InformRequestMessage.Scope?.ContextName?.ToString() ?? "",
                    MessageId   = e.InformRequestMessage.Header?.MessageId ?? 0,
                    Enterprise  = e.InformRequestMessage.Enterprise?.ToString() ?? "",
                    UserName    = e.InformRequestMessage.Parameters?.UserName?.ToString() ?? ""
                };

                foreach (var variable in e.InformRequestMessage.Variables())
                {
                    message.Variables.Add(new SNMPMessageVariable
                    {
                        VariableId = variable.Id?.ToString() ?? "",
                        Value      = variable.Data?.ToString() ?? ""
                    });
                }

                await store.Add(message);
            }
            catch (Exception exception)
            {
                _logger.LogError(exception.Message);
            }
        }
        public async Task Add(SNMPMessage message)
        {
            await _context.AddAsync(message);

            await _context.SaveChangesAsync();
        }