Exemplo n.º 1
0
  @Override
  public void filterClose(final NextFilter nextFilter, final IoSession session)
      throws SSLException {
    SslHandler handler = (SslHandler) session.getAttribute(SSL_HANDLER);
    if (handler == null) {
      // The connection might already have closed, or
      // SSL might have not started yet.
      nextFilter.filterClose(session);
      return;
    }

    WriteFuture future = null;
    try {
      synchronized (handler) {
        if (isSslStarted(session)) {
          future = initiateClosure(nextFilter, session);
          future.addListener(
              new IoFutureListener<IoFuture>() {
                public void operationComplete(IoFuture future) {
                  nextFilter.filterClose(session);
                }
              });
        }
      }

      handler.flushScheduledEvents();
    } finally {
      if (future == null) {
        nextFilter.filterClose(session);
      }
    }
  }
Exemplo n.º 2
0
 @SuppressWarnings("rawtypes")
 private void sendErrorResponse(final IoSession session, final RequestWrapper request) {
   ResponseWrapper responseWrapper =
       new ResponseWrapper(request.getId(), request.getCodecType(), request.getProtocolType());
   responseWrapper.setException(
       new Exception("server threadpool full,maybe because server is slow or too many requests"));
   WriteFuture wf = session.write(responseWrapper);
   wf.addListener(
       new IoFutureListener() {
         public void operationComplete(IoFuture future) {
           if (!((WriteFuture) future).isWritten()) {
             LOGGER.error("server write response error,request id is: " + request.getId());
           }
         }
       });
 }
Exemplo n.º 3
0
 @SuppressWarnings("rawtypes")
 public void run() {
   // pipeline
   if (message instanceof List) {
     List messages = (List) message;
     for (Object messageObject : messages) {
       threadPool.execute(new HandlerRunnable(session, messageObject, threadPool));
     }
   } else {
     RequestWrapper request = (RequestWrapper) message;
     long beginTime = System.currentTimeMillis();
     ResponseWrapper responseWrapper =
         ProtocolFactory.getServerHandler(request.getProtocolType()).handleRequest(request);
     final int id = request.getId();
     // already timeout,so not return
     if ((System.currentTimeMillis() - beginTime) >= request.getTimeout()) {
       LOGGER.warn(
           "timeout,so give up send response to client,requestId is:"
               + id
               + ",client is:"
               + session.getRemoteAddress()
               + ",consumetime is:"
               + (System.currentTimeMillis() - beginTime)
               + ",timeout is:"
               + request.getTimeout());
       return;
     }
     WriteFuture wf = session.write(responseWrapper);
     wf.addListener(
         new IoFutureListener() {
           public void operationComplete(IoFuture future) {
             if (!((WriteFuture) future).isWritten()) {
               LOGGER.error("server write response error,request id is: " + id);
             }
           }
         });
   }
 }