📄 simplefaclistener.java
字号:
package com.sri.oaa2.simplefac;
import org.apache.log4j.Logger;
import edu.emory.mathcs.backport.java.util.concurrent.Semaphore;
import java.net.*;
import java.io.*;
/**
* Helper class for SimpleFac for accepting connections on a port.
*/
public class SimpleFacListener implements Runnable
{
// Logger
static Logger logger = Logger.getLogger(SimpleFacListener.class.getName());
private ServerSocket listenSocket;
private SimpleFac fac;
private ConnectionFactory connFact;
private Semaphore inputReadySem = null;
public SimpleFacListener(SimpleFac f, ServerSocket s, ConnectionFactory cf)
{
setFac(f);
setServerSocket(s);
setConnFact(cf);
}
protected final Semaphore getInputReadySem()
{
return inputReadySem;
}
protected final void setInputReadySem(Semaphore s)
{
inputReadySem = s;
}
protected final void setFac(SimpleFac f)
{
fac = f;
}
protected final SimpleFac getFac()
{
return fac;
}
protected final void setConnFact(ConnectionFactory f)
{
connFact = f;
}
protected final ConnectionFactory getConnFact()
{
return connFact;
}
private final void setServerSocket(ServerSocket s)
{
listenSocket = s;
}
protected final ServerSocket getServerSocket()
{
return listenSocket;
}
public final void run()
{
Socket s = null;
LongConnectionId newId = null;
SimpleFacConnection conn = null;
Thread t;
if(logger.isInfoEnabled()) {
logger.info("SimpleFacListener listening on port " +
getServerSocket().getLocalPort() +
" for " +
FormatTypes.formatTypes[getConnFact().getType()] +
" type messages");
}
if(getInputReadySem() != null) {
getInputReadySem().release();
}
while(true) {
try {
s = getServerSocket().accept();
if(logger.isDebugEnabled()) {
logger.debug("SimpleFacListener.run() got a connection!");
}
}
catch(IOException ioe) {
throw new RuntimeException(ioe.toString());
}
newId = new LongConnectionId(getFac().getNextAgentNum());
conn = getConnFact().createConnection(newId, s, getFac());
conn.setListenPort(getServerSocket().getLocalPort());
synchronized(this) {
getFac().addConnection(newId, conn);
}
t = new Thread(conn);
StringBuffer b = new StringBuffer();
b.append("SimpleFacConnection:");
b.append(newId.toString());
t.setName(b.toString());
t.start();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -