001 package com.croftsoft.apps.vaft.core;
002
003 import java.io.*;
004 import java.net.InetAddress;
005 import java.rmi.*;
006
007 /*********************************************************************
008 * <P>
009 * @author
010 * <A HREF="http://www.alumni.caltech.edu/~croft">David W. Croft</A>
011 * @version
012 * 1998-04-26
013 *********************************************************************/
014
015 public class HostInfo extends ActorRemoteInfo implements Serializable
016 //////////////////////////////////////////////////////////////////////
017 //////////////////////////////////////////////////////////////////////
018 {
019
020 //////////////////////////////////////////////////////////////////////
021 // Static methods
022 //////////////////////////////////////////////////////////////////////
023
024 public static HostRemote getHostRemote ( String url )
025 throws java.net.MalformedURLException,
026 NotBoundException,
027 RemoteException
028 //////////////////////////////////////////////////////////////////////
029 {
030 return ( HostRemote ) Naming.lookup ( url );
031 }
032
033 public static SwapRemote getSwapRemote ( String url )
034 throws java.net.MalformedURLException,
035 NotBoundException,
036 RemoteException
037 //////////////////////////////////////////////////////////////////////
038 {
039 return ( SwapRemote ) Naming.lookup ( url );
040 }
041
042 //////////////////////////////////////////////////////////////////////
043 // Constructor method
044 //////////////////////////////////////////////////////////////////////
045
046 public HostInfo (
047 String rmi_server_name,
048 int rmi_server_port,
049 String rmi_object_name,
050 String [ ] roles )
051 //////////////////////////////////////////////////////////////////////
052 {
053 super ( rmi_server_name, rmi_server_port, rmi_object_name, roles );
054 }
055
056 //////////////////////////////////////////////////////////////////////
057 // Access methods
058 //////////////////////////////////////////////////////////////////////
059
060 public String getRmi_server_name ( ) { return rmi_server_name; }
061 public int getRmi_server_port ( ) { return rmi_server_port; }
062 public String getRmi_object_name ( ) { return rmi_object_name; }
063 public String [ ] getRoles ( ) { return roles; }
064
065 //////////////////////////////////////////////////////////////////////
066 // Convenience methods
067 //////////////////////////////////////////////////////////////////////
068
069 public HostRemote getHostRemote ( )
070 throws java.net.MalformedURLException,
071 NotBoundException,
072 RemoteException
073 //////////////////////////////////////////////////////////////////////
074 {
075 return getHostRemote ( toURL ( ) );
076 }
077
078 public SwapRemote getSwapRemote ( )
079 throws java.net.MalformedURLException,
080 NotBoundException,
081 RemoteException
082 //////////////////////////////////////////////////////////////////////
083 {
084 return getSwapRemote ( toURL ( ) );
085 }
086
087 public HostList swap ( HostList hostList )
088 throws java.net.MalformedURLException,
089 NotBoundException,
090 RemoteException
091 //////////////////////////////////////////////////////////////////////
092 {
093 return getSwapRemote ( ).swap ( hostList );
094 }
095
096 public String toURL ( )
097 //////////////////////////////////////////////////////////////////////
098 {
099 return "rmi://" + rmi_server_name
100 + ":" + rmi_server_port
101 + "/" + rmi_object_name;
102 }
103
104 public String toString ( )
105 //////////////////////////////////////////////////////////////////////
106 {
107 return toURL ( );
108 }
109
110 /*********************************************************************
111 * Returns true if the host address, rmi_server_port, and
112 * rmi_object_name are all the same. Returns false if hostInfo is
113 * null.
114 *********************************************************************/
115 public boolean matches ( HostInfo hostInfo )
116 throws java.net.UnknownHostException
117 //////////////////////////////////////////////////////////////////////
118 {
119 if ( hostInfo == null ) return false;
120 return ( hostInfo.rmi_server_port == rmi_server_port )
121 && hostInfo.rmi_object_name.equals ( rmi_object_name )
122 && hostInfo.getHostAddress ( ).equals ( getHostAddress ( ) );
123 }
124
125 public String getHostAddress ( )
126 throws java.net.UnknownHostException
127 //////////////////////////////////////////////////////////////////////
128 {
129 return InetAddress.getByName ( rmi_server_name ).getHostAddress ( );
130 }
131
132 /*********************************************************************
133 * If the rmi_server_name is "localhost", converts it to a String
134 * representing the IP address number.
135 *********************************************************************/
136 public synchronized void convertLocalHostToAddress ( )
137 throws java.net.UnknownHostException
138 //////////////////////////////////////////////////////////////////////
139 {
140 if ( rmi_server_name.toLowerCase ( ).equals ( "localhost" ) )
141 {
142 rmi_server_name = InetAddress.getLocalHost ( ).getHostAddress ( );
143 }
144 }
145
146 //////////////////////////////////////////////////////////////////////
147 //////////////////////////////////////////////////////////////////////
148 }