public static void SendInform(int requestId, VersionCode version, IPEndPoint receiver, OctetString community, ObjectIdentifier enterprise, uint timestamp, IList <Variable> variables, int timeout, IPrivacyProvider privacy, ISnmpMessage report) { InformRequestMessage message = version == VersionCode.V3 ? new InformRequestMessage( version, MessageCounter.NextId, requestId, community, enterprise, timestamp, variables, privacy, MaxMessageSize, report) : new InformRequestMessage( requestId, version, community, enterprise, timestamp, variables); ISnmpMessage response = message.GetResponse(timeout, receiver); if (response.Pdu().ErrorStatus.ToInt32() != 0) { throw Error.Create( "error in response", receiver.Address, response); } }
/// <summary> /// Processes the message. /// </summary> /// <param name="message">Message.</param> /// <param name="sender">Sender.</param> /// <param name="binding">The binding.</param> public void Process(ISnmpMessage message, System.Net.IPEndPoint sender, ListenerBinding binding) { if (binding == null) { throw new ArgumentNullException("binding"); } if (message == null) { throw new ArgumentNullException("message"); } if (sender == null) { throw new ArgumentNullException("sender"); } if (message.Version != VersionCode.V3) { return; } switch (message.Pdu.TypeCode) { case SnmpType.TrapV2Pdu: { EventHandler <MessageReceivedEventArgs <TrapV2Message> > handler = TrapV2Received; if (handler != null) { handler(this, new MessageReceivedEventArgs <TrapV2Message>(sender, (TrapV2Message)message, binding)); } break; } case SnmpType.InformRequestPdu: { InformRequestMessage inform = (InformRequestMessage)message; binding.SendResponse(inform.GenerateResponse(), sender); EventHandler <MessageReceivedEventArgs <InformRequestMessage> > handler = InformRequestReceived; if (handler != null) { handler(this, new MessageReceivedEventArgs <InformRequestMessage>(sender, inform, binding)); } break; } default: break; } }
public void Test() { var mock = new Mock<ISnmpContext>(); var mock2 = new Mock<IListenerBinding>(); IList<Variable> v = new List<Variable>(); var message = new InformRequestMessage(0, VersionCode.V1, new OctetString("community"), new ObjectIdentifier("1.3.6"), 0, v); mock.Setup(foo => foo.Binding).Returns(mock2.Object); mock.Setup(foo => foo.Request).Returns(message); mock.Setup(foo => foo.Sender).Returns(new IPEndPoint(IPAddress.Any, 0)); mock.Setup(foo => foo.CopyRequest(ErrorCode.NoError, 0)).Verifiable("this must be called"); var handler = new InformRequestMessageHandler(); Assert.Throws<ArgumentNullException>(() => handler.Handle(null, null)); Assert.Throws<ArgumentNullException>(() => handler.Handle(mock.Object, null)); handler.MessageReceived += delegate(object args, InformRequestMessageReceivedEventArgs e) { Assert.AreEqual(mock2.Object, e.Binding); Assert.AreEqual(message, e.InformRequestMessage); Assert.IsTrue(new IPEndPoint(IPAddress.Any, 0).Equals(e.Sender)); }; handler.Handle(mock.Object, new ObjectStore()); }
/// <summary> /// Initializes a new instance of the <see cref="InformRequestMessageReceivedEventArgs"/> class. /// </summary> /// <param name="sender">The sender.</param> /// <param name="request">The request.</param> /// <param name="binding">The binding.</param> public InformRequestMessageReceivedEventArgs(IPEndPoint sender, InformRequestMessage request, IListenerBinding binding) { if (sender == null) { throw new ArgumentNullException("sender"); } if (request == null) { throw new ArgumentNullException("request"); } if (binding == null) { throw new ArgumentNullException("binding"); } Sender = sender; InformRequestMessage = request; Binding = binding; }