Files
bapweb/src/com/eactive/eai/adapter/socket/service/OutboundChannelManager.java
T
Rinjae d6bf8e1943 init
2025-10-23 13:21:43 +09:00

105 lines
3.2 KiB
Java

package com.eactive.eai.adapter.socket.service;
import java.util.HashMap;
import java.util.Iterator;
public class OutboundChannelManager {
private static OutboundChannelManager instance = new OutboundChannelManager();
private HashMap<String,OutboundChannel> pool = new HashMap<String,OutboundChannel>() ;
public OutboundChannelManager() {
}
public static OutboundChannelManager getInstance() {
return instance;
}
public void stop() {
this.removeAll();
}
public void removeAll() {
pool.clear();
}
public void start(String adapterGroupName, OutboundChannel channel) {
this.addConnectionGroup(adapterGroupName, channel);
}
// Adapter Group Connection 을 한번에 등록한다.
public synchronized void addConnectionGroup(String adapterGroupName, OutboundChannel channel) {
OutboundChannel oc = pool.get( adapterGroupName );
if ( oc == null ) {
synchronized ( pool ) {
oc = pool.get( adapterGroupName );
if ( oc == null ) {
pool.put( adapterGroupName, channel );
}
}
}
}
public void addConnection( String adapterGroupName, SocketService connection ) {
OutboundChannel channel = this.getChannel( adapterGroupName );
if ( channel == null ) return;
try {
channel.addConnection( connection );
} catch( Exception e ) {}
}
public void stop(String adapterGroupName) {
// adapterGroupName의 Connection stop & clear
OutboundChannel channel = this.getChannel( adapterGroupName );
if ( channel == null ) return;
try {
channel.removeAllConnection();
} catch ( Exception e ) {}
pool.remove( adapterGroupName );
}
public OutboundChannel getChannel( String adapterGroupName ) {
return (OutboundChannel) pool.get( adapterGroupName );
}
public boolean hasChannel( String adapterGroupName ) {
return pool.containsKey( adapterGroupName );
}
public SocketService getConnection( String adapterGroupName ) {
OutboundChannel channel = this.getChannel( adapterGroupName );
if ( channel == null ) return null;
SocketService connection = null;
try {
connection = (SocketService) channel.getConnection();
} catch ( Exception e ) { }
return connection;
}
public void removeConnection ( String adapterGroupName, Object connection ) {
OutboundChannel channel = this.getChannel( adapterGroupName );
if ( channel == null ) return;
try {
channel.removeConnection( connection );
} catch (Exception e) {}
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("\n■ OutboundChannelManager : ");
try {
for(Iterator<String> iter = pool.keySet().iterator(); iter.hasNext();) {
String key = iter.next();
sb.append("\n ▣ " + key + " : " + pool.get(key).getPoolSize());
}
} catch(Exception e) {
e.printStackTrace();
}
return sb.toString();
}
}