KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > ubik > rmi > server > transport > udp > UdpRmiServer


1 package org.sapia.ubik.rmi.server.transport.udp;
2
3 import org.sapia.ubik.net.Request;
4 import org.sapia.ubik.net.ServerAddress;
5 import org.sapia.ubik.net.udp.UDPServer;
6 import org.sapia.ubik.net.udp.UDPServerAddress;
7 import org.sapia.ubik.rmi.server.Config;
8 import org.sapia.ubik.rmi.server.Log;
9 import org.sapia.ubik.rmi.server.RMICommand;
10 import org.sapia.ubik.rmi.server.Server;
11 import org.sapia.ubik.rmi.server.transport.RmiConnection;
12
13 import java.io.IOException JavaDoc;
14
15 import java.net.DatagramSocket JavaDoc;
16 import java.net.SocketException JavaDoc;
17
18
19 /**
20  * @author Yanick Duchesne
21  * 17-Jun-2003
22  */

23 public class UdpRmiServer extends UDPServer implements Server {
24   /**
25    * Constructor for UdpRmiServer.
26    */

27   public UdpRmiServer() throws SocketException JavaDoc {
28     super(new DatagramSocket JavaDoc(0));
29   }
30
31   /**
32    * @see org.sapia.ubik.rmi.server.Server#getServerAddress()
33    */

34   public ServerAddress getServerAddress() {
35     return new UDPServerAddress(_server.getInetAddress(), _server.getPort());
36   }
37
38   /**
39    * @see org.sapia.ubik.rmi.server.Server#start()
40    */

41   public void start() {
42     Thread JavaDoc t = new Thread JavaDoc(this);
43     t.setDaemon(true);
44     t.setName("ubik.rmi.server");
45     t.start();
46   }
47
48   /**
49    * @see org.sapia.ubik.net.udp.UDPServer#handleRequest(Request, Object)
50    */

51   protected void handleRequest(Request req, Object JavaDoc data) {
52     if (Log.isDebug()) {
53       Log.debug(getClass(), "receiving command");
54     }
55
56     RMICommand cmd = (RMICommand) data;
57
58     if (Log.isDebug()) {
59       Log.debug(getClass(),
60         "command received: " + cmd.getClass().getName() + " from " +
61         req.getConnection().getServerAddress() + '@' + cmd.getVmId());
62     }
63
64     cmd.init(new Config(req.getServerAddress(), req.getConnection()));
65
66     Object JavaDoc resp;
67
68     try {
69       resp = cmd.execute();
70     } catch (Throwable JavaDoc t) {
71       t.printStackTrace();
72       resp = t;
73     }
74
75     try {
76       ((RmiConnection) req.getConnection()).send(resp, cmd.getVmId(),
77         cmd.getServerAddress().getTransportType());
78     } catch (IOException JavaDoc e) {
79       e.printStackTrace();
80     }
81   }
82 }
83
Popular Tags