PowerSNMP for .NET
NotificationReceived Delegate
ExampleExample 




A reference to the Manager component.
The received Trap1Message, Trap2Message, or InformMessage.
The state argument from Manager.Start.
References the method to invoke on an IO completion thread as each message is received.
Syntax
Public Delegate Sub NotificationReceived( _
   ByVal manager As Manager, _
   ByVal receivedMessage As MessageBase, _
   ByVal state As Object _
) 
Dim instance As New NotificationReceived(AddressOf HandlerMethod)
public delegate void NotificationReceived( 
   Manager manager,
   MessageBase receivedMessage,
   object state
)
public: __gc __delegate void NotificationReceived( 
   Manager* manager,
   MessageBase* receivedMessage,
   Object* state
)
public delegate void NotificationReceived( 
   Manager^ manager,
   MessageBase^ receivedMessage,
   Object^ state
)

Parameters

manager
A reference to the Manager component.
receivedMessage
The received Trap1Message, Trap2Message, or InformMessage.
state
The state argument from Manager.Start.
Remarks

The encapsulated method is called as each message is received by the Manager. The user will normally construct a default message to be sent after receiving an InformMessage. No response is required for traps and notifications.

Example
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
See Also

Reference

NotificationReceived Members
Dart.Snmp Namespace


PowerSNMP for .NET Documentation Version 8.0
© 2024 Dart Communications. All Rights Reserved.
Send comments on this topic