summaryrefslogtreecommitdiff
path: root/TAO/examples/Simulator/DOVEBrowser/NS_Resolve.java
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/examples/Simulator/DOVEBrowser/NS_Resolve.java')
-rw-r--r--TAO/examples/Simulator/DOVEBrowser/NS_Resolve.java207
1 files changed, 86 insertions, 121 deletions
diff --git a/TAO/examples/Simulator/DOVEBrowser/NS_Resolve.java b/TAO/examples/Simulator/DOVEBrowser/NS_Resolve.java
index 7ef862e3aea..c4fbf15b245 100644
--- a/TAO/examples/Simulator/DOVEBrowser/NS_Resolve.java
+++ b/TAO/examples/Simulator/DOVEBrowser/NS_Resolve.java
@@ -1,5 +1,4 @@
// $Id$
-
// ============================================================================
//
//
@@ -9,19 +8,23 @@
// = AUTHOR
// Michael Kircher (mk1@cs.wustl.edu)
// Modified for new protocol by Hans Ridder <ridder@veritas.com>
-// Further improved by Kevin Regan <kregan@infoglide.com>
//
// = DESCRIPTION
// Resolves the initial reference to the Naming service,
// the orb has to be given as a parameter to the
// resolve_name_service call.
+//
//
// ============================================================================
+
+
+
import org.omg.CORBA.*;
import java.net.*;
import java.io.*;
+
public class NS_Resolve
{
private static final String ACE_DEFAULT_MULTICAST_ADDR = "224.9.9.2";
@@ -31,126 +34,88 @@ public class NS_Resolve
int nameServicePort_;
public NS_Resolve (String nameServicePort)
- {
- if (nameServicePort != null)
- {
- // If a name service port string was given, parse it
- nameServicePort_ = Integer.parseInt (nameServicePort);
- }
- else
- {
- // Otherwise, just use the default TAO name service port
- nameServicePort_ = TAO_DEFAULT_NAME_SERVER_REQUEST_PORT;
- }
- }
+ {
+ if (nameServicePort != null)
+ {
+ // If a name service port string was given, parse it
+ nameServicePort_ = Integer.parseInt (nameServicePort);
+ }
+ else
+ {
+ // Otherwise, just use the default TAO name service port
+ nameServicePort_ = TAO_DEFAULT_NAME_SERVER_REQUEST_PORT;
+ }
+ }
public org.omg.CORBA.Object resolve_name_service (org.omg.CORBA.ORB orb)
- {
- MulticastSocket sendSocket = null;
- ServerSocket listenSocket = null;
- Socket replySocket = null;
-
- try
- {
- // Create the multicast socket at any port
- sendSocket = new MulticastSocket(0);
-
- // Create a socket at any port for the Naming Service answer
- listenSocket = new ServerSocket(0);
-
- // Create a message with the port and service name in it,
- // length and port number are in network byte order
- ByteArrayOutputStream msg = new ByteArrayOutputStream();
- int dataLength = TAO_SERVICEID_NAMESERVICE.length() + 3;
- msg.write((dataLength >> 8) & 0xff);
- msg.write(dataLength & 0xff);
- msg.write((listenSocket.getLocalPort() >> 8) & 0xff);
- msg.write(listenSocket.getLocalPort() & 0xff);
- msg.write(TAO_SERVICEID_NAMESERVICE.getBytes());
- msg.write(0);
-
- // Define the group for the multicast
- InetAddress group = InetAddress.getByName(ACE_DEFAULT_MULTICAST_ADDR);
- // Create a datagram with the message and send it
- sendSocket.send(new DatagramPacket(msg.toByteArray(),
- msg.size(),
- group, nameServicePort_));
-
- // Wait 3 seconds for the Naming Service to connect
- listenSocket.setSoTimeout(3000);
- replySocket = listenSocket.accept();
+ {
+ try
+ {
+ // Create the multicast socket at any port
+ MulticastSocket sendSocket = new MulticastSocket(0);
+
+ // Create a socket at any port for the Naming Service answer
+ ServerSocket listenSocket = new ServerSocket(0);
+
+ // Create a message with the port and service name in it,
+ // length and port number are in network byte order
+ ByteArrayOutputStream msg = new ByteArrayOutputStream();
+ int dataLength = TAO_SERVICEID_NAMESERVICE.length() + 3;
+ msg.write((dataLength >> 8) & 0xff);
+ msg.write(dataLength & 0xff);
+ msg.write((listenSocket.getLocalPort() >> 8) & 0xff);
+ msg.write(listenSocket.getLocalPort() & 0xff);
+ msg.write(TAO_SERVICEID_NAMESERVICE.getBytes());
+ msg.write(0);
+
+ // Define the group for the multicast
+ InetAddress group = InetAddress.getByName(ACE_DEFAULT_MULTICAST_ADDR);
+ // Create a datagram with the message and send it
+ sendSocket.send(new DatagramPacket(msg.toByteArray(),
+ msg.size(),
+ group, nameServicePort_));
+
+ // Wait 3 seconds for the Naming Service to connect
+ listenSocket.setSoTimeout(3000);
+ Socket replySocket = listenSocket.accept();
- // @@ The restriction right now is that the length of the IOR cannot be longer than 4096
- char[] reply = new char[4096];
-
- // Receive the reply (0 terminated string) or time out
- replySocket.setSoTimeout(3000);
- InputStream in = replySocket.getInputStream();
- int length;
- for (length = 0; length < reply.length; length++)
- {
- int c = in.read();
-
- if (c == -1)
- {
- throw new IOException("Unexpected EOF.");
- }
-
- reply[ length ] = (char) c;
-
- if (c == 0)
- {
- break;
- }
- }
-
- // Convert the String into ??
- return orb.string_to_object(new String(reply, 2, length-2));
- }
- catch (SocketException e)
- {
- System.err.println (e);
- }
- catch (java.io.InterruptedIOException e)
- {
- System.err.println ("NS_Resolve: The receive lasted too long");
- }
- catch(org.omg.CORBA.SystemException e)
- {
- System.err.println(e);
- }
- catch (java.io.IOException e)
- {
- System.err.println (e);
- }
- finally
- {
- // Close the sockets.
-
- if (sendSocket != null)
- {
- sendSocket.close();
- }
-
- if (listenSocket != null)
- {
- try
- {
- listenSocket.close();
- }
- catch (IOException e) {}
- }
-
- if (replySocket != null)
- {
- try
- {
- replySocket.close();
- }
- catch (IOException e) {}
- }
- }
-
- return null;
- }
+ // @@ The restriction right now is that the length of the IOR cannot be longer than 4096
+ byte[] reply = new byte[4096];
+
+ // Receive the reply (0 terminated string) or time out
+ replySocket.setSoTimeout(3000);
+ InputStream in = replySocket.getInputStream();
+ int length;
+ for (length = 0; length < reply.length; length++) {
+ if ((reply[length] = (byte) in.read()) == 0) {
+ break;
+ }
+ }
+
+ // Close all the sockets
+ sendSocket.close();
+ listenSocket.close();
+ replySocket.close();
+
+ // Convert the String into ??
+ return orb.string_to_object(new String(reply, 2, length-2));
+ }
+ catch (SocketException e)
+ {
+ System.err.println (e);
+ }
+ catch (java.io.InterruptedIOException e)
+ {
+ System.err.println ("NS_Resolve: The receive lasted too long");
+ }
+ catch(org.omg.CORBA.SystemException e)
+ {
+ System.err.println(e);
+ }
+ catch (java.io.IOException e)
+ {
+ System.err.println (e);
+ }
+ return null;
+ }
}