Package org.serviceconnector.scmp

Examples of org.serviceconnector.scmp.SCMPMessageSequenceNr


    this.publishService = publishService;
    this.destroyed = false;
    this.serviceName = this.publishService.getName();
    this.subscriptionMask = null;
    this.clientSubscriptionIds = new HashMap<String, SubscriptionMask>();
    this.msgSequenceNr = new SCMPMessageSequenceNr();
    this.permitDenialCounter = new AtomicInteger();
  }
View Full Code Here


    this.remoteNodeConfiguration = remoteNodeConfiguration;
    this.connectionPool = new ConnectionPool(remoteNodeConfiguration.getHost(), remoteNodeConfiguration.getPort(),
        remoteNodeConfiguration.getConnectionType(), remoteNodeConfiguration.getKeepAliveIntervalSeconds(),
        keepAliveTimeoutMillis);
    this.connectionPool.setMaxConnections(remoteNodeConfiguration.getMaxPoolSize());
    this.msgSequenceNr = new SCMPMessageSequenceNr();
  }
View Full Code Here

    try {
      if (responseMessage.isLargeMessage()) {
        // response is large create a large response for reply
        SCMPCompositeSender largeResponse = new SCMPCompositeSender(responseMessage);
        SCMPMessage firstSCMP = largeResponse.getFirst();
        SCMPMessageSequenceNr messageSequenceNr = this.requester.getSCMPMsgSequenceNr();
        firstSCMP.setHeader(SCMPHeaderAttributeKey.MESSAGE_SEQUENCE_NR, messageSequenceNr.incrementAndGetMsgSequenceNr());
        int oti = requestMessage.getHeaderInt(SCMPHeaderAttributeKey.OPERATION_TIMEOUT);
        // adding compositeReceiver to the composite registry
        SCBaseServlet.compositeRegistry.addSCMPLargeResponse(requestMessage.getSessionId(), largeResponse, oti);
        responseMessage = firstSCMP;
      }
View Full Code Here

      // sending of a large response has already been started and incoming SCMP is a pull request
      if (largeResponse.hasNext()) {
        // there are still parts to send to complete request
        SCMPMessage nextSCMP = largeResponse.getNext();
        // handling msgSequenceNr
        SCMPMessageSequenceNr msgSequenceNr = this.requester.getSCMPMsgSequenceNr();
        nextSCMP.setHeader(SCMPHeaderAttributeKey.MESSAGE_SEQUENCE_NR, msgSequenceNr.incrementAndGetMsgSequenceNr());
        this.writeResponse(scmpReq, nextSCMP, response);
        return true;
      }
      SCBaseServlet.compositeRegistry.removeSCMPLargeResponse(sessionId);
    }
View Full Code Here

   */
  private SCMPMessage handleLargeRequest(HttpServletRequest request, HttpServletResponse response, SCMPMessage scmpReq) {
    String sessionId = scmpReq.getSessionId();
    // gets the large request or creates a new one if necessary
    SCMPCompositeReceiver largeRequest = SCBaseServlet.compositeRegistry.getSCMPLargeRequest(sessionId);
    SCMPMessageSequenceNr msgSequenceNr = this.requester.getSCMPMsgSequenceNr();
    SCMPMessage scmpReply = null;
    if (scmpReq.isPart()) {
      // received message part - request not complete yet
      largeRequest.incomplete();
      // set up poll response
      scmpReply = new SCMPPart(true);
      scmpReply.setHeader(SCMPHeaderAttributeKey.MESSAGE_SEQUENCE_NR, msgSequenceNr.incrementAndGetMsgSequenceNr());
      scmpReply.setIsReply(true);
      scmpReply.setMessageType(scmpReq.getMessageType());
    } else {
      // last message of a chunk message received - request complete now
      largeRequest.complete();
      largeRequest.setHeader(SCMPHeaderAttributeKey.MESSAGE_SEQUENCE_NR, msgSequenceNr.incrementAndGetMsgSequenceNr());
      scmpReply = largeRequest;
    }

    if (largeRequest != null && largeRequest.isComplete() == false) {
      // request is not complete yet
View Full Code Here

   *            the session id
   */
  public SCMPSessionCompositeItem(String sessionId) {
    this.largeRequest = null;
    this.largeResponse = null;
    this.msgSequenceNr = new SCMPMessageSequenceNr();
    this.sessionId = sessionId;
  }
View Full Code Here

    this.publishService = publishService;
    this.destroyed = false;
    this.serviceName = this.publishService.getName();
    this.subscriptionMask = null;
    this.clientSubscriptionIds = new HashMap<String, SubscriptionMask>();
    this.msgSequenceNr = new SCMPMessageSequenceNr();
    this.permitDenialCounter = new AtomicInteger();
  }
View Full Code Here

        reply.setHeaderFlag(SCMPHeaderAttributeKey.REJECT_SESSION);
      } else {
        // create session in SCMPSessionCompositeRegistry
        SrvCommandAdapter.sessionCompositeRegistry.addSession(sessionId);
        // handling msgSequenceNr
        SCMPMessageSequenceNr msgSequenceNr = SrvCommandAdapter.sessionCompositeRegistry.getSCMPMsgSequenceNr(sessionId);
        reply.setHeader(SCMPHeaderAttributeKey.MESSAGE_SEQUENCE_NR, msgSequenceNr.getCurrentNr());
      }
      if (scReply.getSessionInfo() != null) {
        reply.setHeader(SCMPHeaderAttributeKey.SESSION_INFO, scReply.getSessionInfo());
      }
    }
View Full Code Here

    try {
      // loading message
      request.load();
      SCMPMessage scmpReq = request.getMessage();
      String sessionId = scmpReq.getSessionId();
      SCMPMessageSequenceNr msgSequenceNr = NettyResponderRequestHandlerTask.compositeRegistry
          .getSCMPMsgSequenceNr(sessionId);

      if (scmpReq.isKeepAlive()) {
        scmpReq.setIsReply(true);
        response.setSCMP(scmpReq);
        response.write();
        return;
      }
      if (scmpReq.isFault()) {
        // fault received nothing to to return - delete largeRequest/largeResponse
        this.sendBadRequestError(response, scmpReq);
        NettyResponderRequestHandlerTask.compositeRegistry.removeSCMPLargeResponse(sessionId);
        NettyResponderRequestHandlerTask.compositeRegistry.removeSCMPLargeRequest(sessionId);
        return;
      }

      // needs to set a key in thread local to identify thread later and get access to the responder
      ResponderRegistry responderRegistry = AppContext.getResponderRegistry();
      int port = request.getLocalSocketAddress().getPort();
      responderRegistry.setThreadLocal(port);

      ICommand command = AppContext.getCommandFactory().getCommand(request.getKey());
      // gets the command
      if (command == null) {
        this.sendBadRequestError(response, scmpReq);
        return;
      }

      if (command.isPassThroughPartMsg() == false) {
        // large messages needs to be handled
        SCMPCompositeSender largeResponse = NettyResponderRequestHandlerTask.compositeRegistry
            .getSCMPLargeResponse(sessionId);

        if (largeResponse != null && scmpReq.isPart()) {
          // sending of a large response has already been started and incoming scmp is a pull request
          if (largeResponse.hasNext()) {
            // there are still parts to send to complete request
            SCMPMessage nextSCMP = largeResponse.getNext();
            // handling msgSequenceNr
            msgSequenceNr.incrementAndGetMsgSequenceNr();
            nextSCMP.setHeader(SCMPHeaderAttributeKey.MESSAGE_SEQUENCE_NR, msgSequenceNr.getCurrentNr());
            response.setSCMP(nextSCMP);
            response.write();
            return;
          }
          NettyResponderRequestHandlerTask.compositeRegistry.removeSCMPLargeResponse(sessionId);
View Full Code Here

    } else {
      // next part of a large request received - add to large request
      largeRequest.add(scmpReq);
    }

    SCMPMessageSequenceNr msgSequenceNr = NettyResponderRequestHandlerTask.compositeRegistry.getSCMPMsgSequenceNr(sessionId);

    if (scmpReq.isPart()) {
      // received message part - request not complete yet
      largeRequest.incomplete();
      // set up poll response
      SCMPMessage scmpReply = new SCMPPart(true);
      scmpReply.setHeader(SCMPHeaderAttributeKey.MESSAGE_SEQUENCE_NR, msgSequenceNr.incrementAndGetMsgSequenceNr());
      scmpReply.setIsReply(true);
      scmpReply.setMessageType(scmpReq.getMessageType());
      response.setSCMP(scmpReply);
    } else {
      // last message of a chunk message received - request complete now
      largeRequest.complete();
      largeRequest.setHeader(SCMPHeaderAttributeKey.MESSAGE_SEQUENCE_NR, msgSequenceNr.incrementAndGetMsgSequenceNr());
      request.setMessage(largeRequest);
    }
    return largeRequest;
  }
View Full Code Here

TOP

Related Classes of org.serviceconnector.scmp.SCMPMessageSequenceNr

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.