diff options
Diffstat (limited to 'src/main/java/com/c2kernel/entity/proxy/ProxyManager.java')
| -rw-r--r-- | src/main/java/com/c2kernel/entity/proxy/ProxyManager.java | 73 |
1 files changed, 33 insertions, 40 deletions
diff --git a/src/main/java/com/c2kernel/entity/proxy/ProxyManager.java b/src/main/java/com/c2kernel/entity/proxy/ProxyManager.java index 6a35c88..d95c86e 100644 --- a/src/main/java/com/c2kernel/entity/proxy/ProxyManager.java +++ b/src/main/java/com/c2kernel/entity/proxy/ProxyManager.java @@ -19,6 +19,7 @@ import com.c2kernel.common.InvalidDataException; import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.Path;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.process.Gateway;
@@ -29,7 +30,7 @@ import com.c2kernel.utils.SoftCache; public class ProxyManager
{
- SoftCache<Integer, ItemProxy> proxyPool = new SoftCache<Integer, ItemProxy>(50);
+ SoftCache<ItemPath, ItemProxy> proxyPool = new SoftCache<ItemPath, ItemProxy>(50);
HashMap<DomainPathSubscriber, DomainPath> treeSubscribers = new HashMap<DomainPathSubscriber, DomainPath>();
HashMap<String, ProxyServerConnection> connections = new HashMap<String, ProxyServerConnection>();
@@ -42,17 +43,16 @@ public class ProxyManager Iterator<Path> servers = Gateway.getLookup().search(new DomainPath("/servers"), new Property("Type", "Server", false));
while(servers.hasNext()) {
- Path thisServerPath = servers.next();
+ Path thisServerResult = servers.next();
try {
- Logger.msg(thisServerPath.dump());
- int syskey = thisServerPath.getSysKey();
- String remoteServer = ((Property)Gateway.getStorage().get(syskey, ClusterStorage.PROPERTY+"/Name", null)).getValue();
- String portStr = ((Property)Gateway.getStorage().get(syskey, ClusterStorage.PROPERTY+"/ProxyPort", null)).getValue();
+ ItemPath thisServerPath = thisServerResult.getItemPath();
+ String remoteServer = ((Property)Gateway.getStorage().get(thisServerPath, ClusterStorage.PROPERTY+"/Name", null)).getValue();
+ String portStr = ((Property)Gateway.getStorage().get(thisServerPath, ClusterStorage.PROPERTY+"/ProxyPort", null)).getValue();
int remotePort = Integer.parseInt(portStr);
connectToProxyServer(remoteServer, remotePort);
} catch (Exception ex) {
- Logger.error("Exception retrieving proxy server connection data for "+thisServerPath);
+ Logger.error("Exception retrieving proxy server connection data for "+thisServerResult);
Logger.error(ex);
}
}
@@ -68,8 +68,8 @@ public class ProxyManager protected void resubscribe(ProxyServerConnection conn) {
synchronized (proxyPool) {
- for (Integer key : proxyPool.keySet()) {
- ProxyMessage sub = new ProxyMessage(key.intValue(), ProxyMessage.ADDPATH, false);
+ for (ItemPath key : proxyPool.keySet()) {
+ ProxyMessage sub = new ProxyMessage(key, ProxyMessage.ADDPATH, false);
Logger.msg(5, "Subscribing to item "+key);
conn.sendMessage(sub);
}
@@ -99,15 +99,14 @@ public class ProxyManager if (thisMessage.getPath().equals(ProxyMessage.PINGPATH)) // ping response
return;
- if (thisMessage.getSysKey() == ProxyMessage.NA) // must be domain path info
+ if (thisMessage.getItemPath() == null) // must be domain path info
informTreeSubscribers(thisMessage.getState(), thisMessage.getPath());
else {
// proper proxy message
Logger.msg(5, "Received proxy message: "+thisMessage.toString());
- Integer key = new Integer(thisMessage.getSysKey());
- ItemProxy relevant = proxyPool.get(key);
+ ItemProxy relevant = proxyPool.get(thisMessage.getItemPath());
if (relevant == null)
- Logger.warning("Received proxy message for sysKey "+thisMessage.getSysKey()+" which we don't have a proxy for.");
+ Logger.warning("Received proxy message for sysKey "+thisMessage.getItemPath()+" which we don't have a proxy for.");
else
try {
relevant.notify(thisMessage);
@@ -156,35 +155,32 @@ public class ProxyManager *
**************************************************************************/
private ItemProxy createProxy( org.omg.CORBA.Object ior,
- int systemKey,
- boolean isAgent )
+ ItemPath itemPath)
throws ObjectNotFoundException
{
ItemProxy newProxy = null;
- Logger.msg(5, "ProxyManager::creating proxy on Item " + systemKey);
+ Logger.msg(5, "ProxyManager::creating proxy on Item " + itemPath);
- if( isAgent )
- {
- newProxy = new AgentProxy(ior, systemKey);
+ if( itemPath instanceof AgentPath ) {
+ newProxy = new AgentProxy(ior, (AgentPath)itemPath);
}
- else
- {
- newProxy = new ItemProxy(ior, systemKey);
+ else {
+ newProxy = new ItemProxy(ior, itemPath);
}
// subscribe to changes from server
- ProxyMessage sub = new ProxyMessage(systemKey, ProxyMessage.ADDPATH, false);
+ ProxyMessage sub = new ProxyMessage(itemPath, ProxyMessage.ADDPATH, false);
sendMessage(sub);
reportCurrentProxies(9);
return ( newProxy );
}
- protected void removeProxy( int systemKey )
+ protected void removeProxy( ItemPath itemPath )
{
- ProxyMessage sub = new ProxyMessage(systemKey, ProxyMessage.DELPATH, true);
- Logger.msg(5,"ProxyManager.removeProxy() - Unsubscribing to proxy informer for "+systemKey);
+ ProxyMessage sub = new ProxyMessage(itemPath, ProxyMessage.DELPATH, true);
+ Logger.msg(5,"ProxyManager.removeProxy() - Unsubscribing to proxy informer for "+itemPath);
sendMessage(sub);
}
@@ -194,20 +190,18 @@ public class ProxyManager * SystemKey
**************************************************************************/
private ItemProxy getProxy( org.omg.CORBA.Object ior,
- int systemKey,
- boolean isAgent )
+ ItemPath itemPath)
throws ObjectNotFoundException
{
- Integer key = new Integer(systemKey);
synchronized(proxyPool) {
ItemProxy newProxy;
// return it if it exists
- newProxy = proxyPool.get(key);
+ newProxy = proxyPool.get(itemPath);
if (newProxy == null) {
// create a new one
- newProxy = createProxy(ior, systemKey, isAgent );
- proxyPool.put(key, newProxy);
+ newProxy = createProxy(ior, itemPath);
+ proxyPool.put(itemPath, newProxy);
}
return newProxy;
@@ -222,13 +216,12 @@ public class ProxyManager public ItemProxy getProxy( Path path )
throws ObjectNotFoundException
{
-
- //convert namePath to dn format
+ ItemPath itemPath;
+ if (path instanceof ItemPath) itemPath = (ItemPath)path;
+ else itemPath = path.getItemPath();
Logger.msg(8,"ProxyManager::getProxy(" + path.toString() + ")");
- boolean isAgent = (path.getEntity() instanceof AgentPath);
- return getProxy( Gateway.getLookup().resolve(path),
- path.getSysKey(),
- isAgent );
+ return getProxy( Gateway.getLookup().resolve(itemPath),
+ itemPath );
}
@@ -249,11 +242,11 @@ public class ProxyManager Logger.msg(logLevel, "Current proxies: ");
try {
synchronized(proxyPool) {
- Iterator<Integer> i = proxyPool.keySet().iterator();
+ Iterator<ItemPath> i = proxyPool.keySet().iterator();
for( int count=0; i.hasNext(); count++ )
{
- Integer nextProxy = i.next();
+ ItemPath nextProxy = i.next();
ItemProxy thisProxy = proxyPool.get(nextProxy);
if (thisProxy != null)
Logger.msg(logLevel,
|
