KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > snmp4j > test > MultiThreadedTrapReceiver


1 /*_############################################################################
2   _##
3   _## SNMP4J - MultiThreadedTrapReceiver.java
4   _##
5   _## Copyright 2003-2007 Frank Fock and Jochen Katz (SNMP4J.org)
6   _##
7   _## Licensed under the Apache License, Version 2.0 (the "License");
8   _## you may not use this file except in compliance with the License.
9   _## You may obtain a copy of the License at
10   _##
11   _## http://www.apache.org/licenses/LICENSE-2.0
12   _##
13   _## Unless required by applicable law or agreed to in writing, software
14   _## distributed under the License is distributed on an "AS IS" BASIS,
15   _## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   _## See the License for the specific language governing permissions and
17   _## limitations under the License.
18   _##
19   _##########################################################################*/

20
21
22 package org.snmp4j.test;
23
24 import org.snmp4j.Snmp;
25 import org.snmp4j.smi.Address;
26 import org.snmp4j.security.SecurityProtocols;
27 import org.snmp4j.smi.UdpAddress;
28 import org.snmp4j.security.SecurityModels;
29 import org.snmp4j.TransportMapping;
30 import org.snmp4j.smi.OctetString;
31 import org.snmp4j.transport.DefaultTcpTransportMapping;
32 import org.snmp4j.mp.MPv3;
33 import org.snmp4j.transport.DefaultUdpTransportMapping;
34 import org.snmp4j.security.USM;
35 import org.snmp4j.smi.GenericAddress;
36 import java.net.UnknownHostException JavaDoc;
37 import java.io.IOException JavaDoc;
38 import org.snmp4j.util.MultiThreadedMessageDispatcher;
39 import org.snmp4j.util.ThreadPool;
40 import org.snmp4j.MessageDispatcherImpl;
41 import org.snmp4j.smi.TcpAddress;
42 import org.snmp4j.CommandResponder;
43 import org.snmp4j.CommandResponderEvent;
44 import org.snmp4j.mp.MPv1;
45 import org.snmp4j.mp.MPv2c;
46
47 public class MultiThreadedTrapReceiver implements CommandResponder {
48
49   // initialize Log4J logging
50
/*
51   static {
52     LogFactory.setLogFactory(new Log4jLogFactory());
53     BER.setCheckSequenceLength(false);
54   }
55 */

56   private MultiThreadedMessageDispatcher dispatcher;
57   private Snmp snmp = null;
58   private Address listenAddress;
59   private ThreadPool threadPool;
60
61   private int n = 0;
62   private long start = -1;
63
64
65   public MultiThreadedTrapReceiver() {
66 // BasicConfigurator.configure();
67
}
68
69   private void init() throws UnknownHostException JavaDoc, IOException JavaDoc {
70     threadPool = ThreadPool.create("Trap", 2);
71     dispatcher =
72         new MultiThreadedMessageDispatcher(threadPool,
73                                            new MessageDispatcherImpl());
74     listenAddress =
75         GenericAddress.parse(System.getProperty("snmp4j.listenAddress",
76                                                 "udp:0.0.0.0/162"));
77     TransportMapping transport;
78     if (listenAddress instanceof UdpAddress) {
79       transport = new DefaultUdpTransportMapping((UdpAddress)listenAddress);
80     }
81     else {
82       transport = new DefaultTcpTransportMapping((TcpAddress)listenAddress);
83     }
84     snmp = new Snmp(dispatcher, transport);
85     snmp.getMessageDispatcher().addMessageProcessingModel(new MPv1());
86     snmp.getMessageDispatcher().addMessageProcessingModel(new MPv2c());
87     snmp.getMessageDispatcher().addMessageProcessingModel(new MPv3());
88     USM usm = new USM(SecurityProtocols.getInstance(),
89                       new OctetString(MPv3.createLocalEngineID()), 0);
90     SecurityModels.getInstance().addSecurityModel(usm);
91     snmp.listen();
92   }
93
94   public void run() {
95     try {
96       init();
97       snmp.addCommandResponder(this);
98     }
99     catch (Exception JavaDoc ex) {
100       ex.printStackTrace();
101     }
102   }
103
104   public static void main(String JavaDoc[] args) {
105     MultiThreadedTrapReceiver multithreadedtrapreceiver = new
106         MultiThreadedTrapReceiver();
107     multithreadedtrapreceiver.run();
108   }
109
110   public void processPdu(CommandResponderEvent event) {
111     if (start < 0) {
112       start = System.currentTimeMillis()-1;
113     }
114 // System.out.println(event.toString());
115
n++;
116     if ((n % 100 == 1)) {
117       System.out.println("Processed " +
118                          (n / (double)(System.currentTimeMillis() - start)) * 1000 +
119                          "/s, total="+n);
120     }
121   }
122 }
123
Popular Tags