Importing an SNA Custom Handshake Class

Deploying an SNA Custom Handshake Class

To further utilize the capabilities of the SNA Adapter, this sectoin provides guidelines for implementing a custom handshake class in a deployed Project. After the default Collaboration is generated, you can then modify the Collaboration to suit your application’s needs. While you will need to write your own code for both Inbound and Outbound SNA modes, the following code is also provided as the source for the class that is implemented in the SNA adapter.

Sample Code for Inbound Mode:


package com.stc.connector.snalu62.api;

import com.stc.connector.logging.LogFactory;
import com.stc.connector.logging.Logger;

import com.stc.connector.snalu62.exception.SNAApplicationException;

/*
 * This is a sample class to implement the interface SNACustomerHandshake.
 * It implements a simple Accept_Conversation scenario for windows platform.
*/
public class SNACustomerHandshakeImplSampleAccept implements SNACustomerHandshake {
    public static final String version = "cvs $Revision: 1.1.2.1.2.2 $   
$Date: 2005/11/10 21:40:15 $";
    private Logger logger = LogFactory.getLogger("STC.eWay.SNALU62.
" + getClass().getName());
    private String logMsg;

    /**
     * Constructor
     *
     */
    public SNACustomerHandshakeImplSampleAccept() {
        super();
    }
    /**
     * @see com.stc.connector.snalu62.api.SNACustomerHandshake#startConversation
(com.stc.connector.snalu62.api.SNACPICCalls)
     */
    public void startConversation(SNACPICCalls cpic) throws SNAApplicationException {
        try {
            //do whatever checking logics before/after the following CPIC call
 on your desires
            cpic.cmsltp();

            //do whatever checking logics before/after the following CPIC call
 on your desires
            cpic.cmaccp();
            if (!cpic.getConversationAttributes().returnCodeIs(0) &&   // 0: CM_OK
                !cpic.getConversationAttributes().returnCodeIs(35)) 
{  //35: CM_OPERATION_INCOMPLETE
                logMsg = "SNACustomerHandshakeImplSampleAccept.startConversation():
The return code is <"
                    + cpic.getConversationAttributes().getReturnCode()
                    + ">.";
                logger.error(logMsg);
                throw new SNAApplicationException(logMsg);
            }

            if (cpic.getConversationAttributes().returnCodeIs(35)) 
{  //35: CM_OPERATION_INCOMPLETE
                logger.info("SNACustomerHandshakeImplSampleAccept.startConversation(): 
About to call cmwait ...");
                //do whatever checking logics before/after the following CPIC call
 on your desires
                cpic.cmwait();
            }

            if (!cpic.getConversationAttributes().returnCodeIs(0) ||
                !cpic.getConversationAttributes().convReturnCodeIs(0)) { // 0: CM_OK
                logMsg = "SNACustomerHandshakeImplSampleAccept.startConversation(): 
The return_Code is <"
                    + cpic.getConversationAttributes().getReturnCode()
                    + "> and the conversation_Return_Code is <"
                    + cpic.getConversationAttributes().getConvReturnCode()
                    + ">. SNA conversation is not established.";
                logger.error(logMsg);
                throw new SNAApplicationException(logMsg);
            }

            //do whatever other logics on your desires here
            //...
        } catch (Exception e) {
            logMsg = "SNACustomerHandshakeImplSampleAccept.startConversation(): 
Failed. Got exception ["
                + e.toString()
                + "].";
            logger.error(logMsg, e);
            throw new SNAApplicationException(logMsg, e);
        }

    }

}

Sample Code for Outbound Mode:


package com.stc.connector.snalu62.api;

import com.stc.connector.logging.LogFactory;
import com.stc.connector.logging.Logger;

import com.stc.connector.snalu62.exception.SNAApplicationException;

/**
 * This is a sample class to implement the interface SNACustomerHandshake.
 * It implements a simple Initialize_Conversation scenario for windows platform.
*/
public class SNACustomerHandshakeImplSampleInitialize implements SNACustomerHandshake {
    public static final String version = "cvs $Revision:
 1.1.2.1.2.2 $   $Date: 2005/11/10 21:40:15 $";
    private Logger logger = LogFactory.getLogger("STC.eWay.SNALU62." + getClass().
getName());
    private String logMsg;

    /**
     * Constructor
     *
     */
    public SNACustomerHandshakeImplSampleInitialize() {
        super();
    }

    /**
     * @see com.stc.connector.snalu62.api.SNACustomerHandshake#startConversation
(com.stc.connector.snalu62.api.SNACPICCalls)
     */
    public void startConversation(SNACPICCalls cpic) throws SNAApplicationException {
        try {
            //do whatever checking logics before/after the following CPIC call on your
 desires
            cpic.cminit();

            //do whatever checking logics before/after the following CPIC call
 on your desires
            cpic.cmssl();

            //do whatever checking logics before/after the following CPIC call on your
desires
            cpic.cmallc();
            if (!cpic.getConversationAttributes().returnCodeIs(0)) { // 0: CM_OK
                logMsg = "SNACustomerHandshakeImplSampleInitialize.
startConversation(): The return_Code is <"
                    + cpic.getConversationAttributes().getReturnCode()
                    + ">. SNA conversation is not established.";
                logger.error(logMsg);
                throw new SNAApplicationException(logMsg);
            }

            //do whatever other logics on your desires here
            //...
        } catch (Exception e) {
            logMsg = "SNACustomerHandshakeImplSampleInitialize.startConversation(): 
Failed. Got exception ["
                + e.toString()
                + "].";
            logger.error(logMsg, e);
            throw new SNAApplicationException(logMsg, e);
        }

    }

}