Package org.serviceconnector.scmp

Examples of org.serviceconnector.scmp.SCMPCompositeReceiver


     *             the exception
     */
    private void handlingLargeResponse(SCMPMessage scmpReply) throws Exception {
      // response is a part - response is large, continue polling
      // SCMPLargeResponse handles parts of large requests, putting all together
      this.largeResponse = new SCMPCompositeReceiver(requestMsg, scmpReply);
      SCMPMessage message = largeResponse.getPart();
      // handling msgSequenceNr
      if (SCMPMessageSequenceNr.necessaryToWrite(message.getMessageType())) {
        // increment msgSequenceNr
        this.msgSequenceNr.incrementAndGetMsgSequenceNr();
View Full Code Here


   * @return true, if successful
   */
  private boolean handleLargeRequestNeeded(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);

    if (largeRequest == null) {
      // no compositeReceiver used before
      if (scmpReq.isPart() == false) {
        // request not chunk
        return false;
      }
      // first part of a large request received - create large request
      largeRequest = new SCMPCompositeReceiver(scmpReq, (SCMPMessage) scmpReq);
      int oti = scmpReq.getHeaderInt(SCMPHeaderAttributeKey.OPERATION_TIMEOUT);
      // add largeRequest to the registry
      SCBaseServlet.compositeRegistry.addSCMPLargeRequest(sessionId, largeRequest, oti);
    } else {
      // next part of a large request received - add to large request
      largeRequest.add(scmpReq);
    }
    return true;
  }
View Full Code Here

   * @return the sCMP message
   */
  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
      this.writeResponse(scmpReq, scmpReply, response);
      return null;
    }
    // removes largeResponse - request is complete don't need to know preceding messages any more
View Full Code Here

   * @return true, if successful
   */
  private boolean handleLargeRequestNeeded(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);

    if (largeRequest == null) {
      // no compositeReceiver used before
      if (scmpReq.isPart() == false) {
        // request not chunk
        return false;
      }
      // first part of a large request received - create large request
      largeRequest = new SCMPCompositeReceiver(scmpReq, (SCMPMessage) scmpReq);
      int oti = scmpReq.getHeaderInt(SCMPHeaderAttributeKey.OPERATION_TIMEOUT);
      // add largeRequest to the registry
      SCBaseServlet.compositeRegistry.addSCMPLargeRequest(sessionId, largeRequest, oti);
    } else {
      // next part of a large request received - add to large request
      largeRequest.add(scmpReq);
    }
    return true;
  }
View Full Code Here

   * @return the sCMP message
   */
  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 - SCMP Version request
      scmpReply = new SCMPPart(scmpReq.getSCMPVersion(), 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
      this.writeResponse(scmpReq, scmpReply, response);
      return null;
    }
    // removes largeResponse - request is complete don't need to know preceding messages any more
View Full Code Here

            return;
          }
          NettyResponderRequestHandlerTask.compositeRegistry.removeSCMPLargeResponse(sessionId);
        }
        // gets the large request or creates a new one if necessary
        SCMPCompositeReceiver largeRequest = this.getSCMPLargeRequest(request, response);

        if (largeRequest != null && largeRequest.isComplete() == false) {
          // request is not complete yet
          response.write();
          return;
        }
        // removes largeResponse - request is complete don't need to know preceding messages any more
View Full Code Here

   *             the exception
   */
  private SCMPCompositeReceiver getSCMPLargeRequest(IRequest request, IResponse response) throws Exception {
    SCMPMessage scmpReq = request.getMessage();
    String sessionId = scmpReq.getSessionId();
    SCMPCompositeReceiver largeRequest = NettyResponderRequestHandlerTask.compositeRegistry.getSCMPLargeRequest(scmpReq
        .getSessionId());

    if (largeRequest == null) {
      // no compositeReceiver used before
      if (scmpReq.isPart() == false) {
        // request not chunk
        return null;
      }
      // first part of a large request received - create large request
      largeRequest = new SCMPCompositeReceiver(scmpReq, scmpReq);
      int oti = scmpReq.getHeaderInt(SCMPHeaderAttributeKey.OPERATION_TIMEOUT);
      // add largeResponse to the registry
      NettyResponderRequestHandlerTask.compositeRegistry.addSCMPLargeRequest(sessionId, largeRequest, oti);
    } 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

    request.setMessageType(SCMPMsgType.CLN_EXECUTE);

    SCMPPart firstPart = new SCMPPart(SCMPVersion.CURRENT, false);
    String bodyString = "first part request";
    firstPart.setBody(bodyString);
    SCMPCompositeReceiver largeResponse = new SCMPCompositeReceiver(request, firstPart);

    bodyLength += bodyString.length();
    body.append(bodyString);
    Assert.assertEquals(bodyLength, largeResponse.getOffset());

    for (int i = 0; i < 10; i++) {
      SCMPPart part = new SCMPPart(SCMPVersion.CURRENT);
      bodyString = "part nr: " + i;
      part.setBody(bodyString);
      largeResponse.add(part);
      bodyLength += bodyString.length();
      body.append(bodyString);
      Assert.assertEquals(bodyLength, largeResponse.getOffset());
    }
    // needed to compare to requestPart of the composite
    // body of the requestPart is null because body is split into several parts
    // bodyType is text because split parts hold text bodies
    request.setBody(null);
    request.setHeader(SCMPHeaderAttributeKey.BODY_TYPE, SCMPBodyType.TEXT.getValue());

    Assert.assertEquals(bodyLength, largeResponse.getBodyLength());
    Assert.assertEquals(body.toString(), largeResponse.getBody() + "");
    Assert.assertEquals(request.toString(), largeResponse.getPollMessage().toString());
  }
View Full Code Here

    request.setMessageType(SCMPMsgType.CLN_EXECUTE);

    SCMPPart firstPart = new SCMPPart(false);
    String bodyString = "first part request";
    firstPart.setBody(bodyString);
    SCMPCompositeReceiver largeResponse = new SCMPCompositeReceiver(request, firstPart);

    bodyLength += bodyString.length();
    body.append(bodyString);
    Assert.assertEquals(bodyLength, largeResponse.getOffset());

    for (int i = 0; i < 10; i++) {
      SCMPPart part = new SCMPPart();
      bodyString = "part nr: " + i;
      part.setBody(bodyString);
      largeResponse.add(part);
      bodyLength += bodyString.length();
      body.append(bodyString);
      Assert.assertEquals(bodyLength, largeResponse.getOffset());
    }
    // needed to compare to requestPart of the composite
    // body of the requestPart is null because body is split into several parts
    // bodyType is text because split parts hold text bodies
    request.setBody(null);
    request.setHeader(SCMPHeaderAttributeKey.BODY_TYPE, SCMPBodyType.TEXT.getValue());

    Assert.assertEquals(bodyLength, largeResponse.getBodyLength());
    Assert.assertEquals(body.toString(), largeResponse.getBody() + "");
    Assert.assertEquals(request.toString(), largeResponse.getPart().toString());
  }
View Full Code Here

     *             the exception
     */
    private void handlingLargeResponse(SCMPMessage scmpReply) throws Exception {
      // response is a part - response is large, continue polling
      // SCMPLargeResponse handles parts of large requests, putting all together
      this.largeResponse = new SCMPCompositeReceiver(requestMsg, scmpReply);
      SCMPMessage message = largeResponse.getPollMessage();
      // handling msgSequenceNr
      if (SCMPMessageSequenceNr.necessaryToWrite(message.getMessageType())) {
        // increment msgSequenceNr
        this.msgSequenceNr.incrementAndGetMsgSequenceNr();
View Full Code Here

TOP

Related Classes of org.serviceconnector.scmp.SCMPCompositeReceiver

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.