code: public SMPPServerSession accept() throws IOException {
          Connection conn = serverConn.accept();
          conn.setSoTimeout(initiationTimer);
          return new SMPPServerSession(conn, sessionStateListener,
                  messageReceiverListener, responseDeliveryListener,
                  pduProcessorDegree);
      }
docs: Accept session request from client. The session state is still OPEN. To
  communicate with ESME properly binding request should be accepted.
  
  <pre>
  SMPPServerSession session = listener.accept();
  BindRequest bindReq = session.waitForBind(5000);
  
  if (checkPassword(bindReq)) {
  bindReq.accept(&quot;sys&quot;);
  } else {
  bindReq.reject(SMPPConstant.STAT_ESME_RINVPASWD);
  }
  </pre>
  
  @return the accepted {@link SMPPServerSession}.
  @throws SocketTimeoutException if timeout reach with no session accepted.
  @throws IOException if there is an IO error occur.
  @see SMPPServerSession
  @see BindRequest