⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplefaclistener.java

📁 SRI international 发布的OAA框架软件
💻 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 + -