Used to send SNMP version 1 traps from an agent to a manager.
The following example demonstrates receiving notifications (Trap1, Trap2 and Inform messages), and responding to Inform messages.
private void button1_Click(object sender, EventArgs e)
{
//Start listening for notifications
manager1.Start(manager1_NotificationReceived, null);
}
private void manager1_NotificationReceived(Manager manager, MessageBase message, object state)
{
//Marshal message to the UI thread using the Message event
if (message is Trap1Message)
manager.Marshal(new MessageBase[] { message }, "trap1", null);
else if (message is Trap2Message)
manager.Marshal(new MessageBase[] { message }, "trap2", null);
else if (message is InformMessage)
{
manager.Marshal(new MessageBase[] { message }, "inform", null);
//Send response to inform message origin
manager.Send(new ResponseMessage(message as InformMessage, null), message.Origin);
}
}
private void manager1_Message(object sender, MessageEventArgs e)
{
//Update interface according to message type received
switch (e.Message)
{
case "trap1":
Trap1Message trap = e.Messages[0] as Trap1Message;
label1.Text = "Trap1 received with Enterprise(" + trap.Enterprise + "), Generic Type (" +
trap.GenericTrap.ToString() + "), Specific Type(" + trap.SpecificTrap.ToString() + ")";
break;
case "trap2":
Trap2Message notification = e.Messages[0] as Trap2Message;
label2.Text = "Trap2 received with OID (" + notification.Oid + ")";
break;
case "inform":
InformMessage inform = e.Messages[0] as InformMessage;
label3.Text = "Inform received with " + inform.Variables.Count.ToString() + " variable(s).";
break;
}
}
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
'Start listening for notifications
manager1.Start(AddressOf manager1_NotificationReceived, Nothing)
End Sub
Private Sub manager1_NotificationReceived(ByVal manager As Manager, ByVal message As MessageBase, ByVal state As Object)
'Marshal message to the UI thread using the Message event
If TypeOf message Is Trap1Message Then
manager.Marshal(New MessageBase() { message }, "trap1", Nothing)
ElseIf TypeOf message Is Trap2Message Then
manager.Marshal(New MessageBase() { message }, "trap2", Nothing)
ElseIf TypeOf message Is InformMessage Then
manager.Marshal(New MessageBase() { message }, "inform", Nothing)
'Send response to inform message origin
manager.Send(New ResponseMessage(TryCast(message, InformMessage), Nothing), message.Origin)
End If
End Sub
Private Sub manager1_Message(ByVal sender As Object, ByVal e As MessageEventArgs)
'Update interface according to message type received
Select Case e.Message
Case "trap1"
Dim trap As Trap1Message = TryCast(e.Messages(0), Trap1Message)
label1.Text = "Trap1 received with Enterprise(" & trap.Enterprise & "), Generic Type (" & trap.GenericTrap.ToString() & "), Specific Type(" & trap.SpecificTrap.ToString() & ")"
Case "trap2"
Dim notification As Trap2Message = TryCast(e.Messages(0), Trap2Message)
label2.Text = "Trap2 received with OID (" & notification.Oid & ")"
Case "inform"
Dim inform As InformMessage = TryCast(e.Messages(0), InformMessage)
label3.Text = "Inform received with " & inform.Variables.Count.ToString() & " variable(s)."
End Select
End Sub