Print Page | Close Window

package sms.gateway.process

Printed From: Sieu ho tro
Category: Information Technology
Forum Name: Java, Java script
Forum Description: js
URL: http://sieuhotro.com/forum_posts.asp?TID=1943
Printed Date: 19 April 2024 at 20:38
Software Version: Web Wiz Forums 12.03 - http://www.webwizforums.com


Topic: package sms.gateway.process
Posted By: administrator
Subject: package sms.gateway.process
Date Posted: 16 April 2009 at 21:12

package sms.gateway.process;

 
import smpp.*;
import smpp.pdu.*;

import sms.util.Queue;
import sms.util.FileTool;
import sms.common.*;
import sms.gateway.Gateway;
import java.io.IOException;

/**
 * For receiving PDUs from SMSC, in Sync mode
 * --> Only request PDUs are received.
 */
public class SMPPReceiver extends Thread {
    private static Logger logger = new Logger("SMPPReceiver");

    private PDU pdu = null;
    private DeliverSM dsm = null;
    private Queue requestQueue = null;


    public SMPPReceiver() {
        this.requestQueue = Gateway.getRequestQueue();
    }
    public void run() {
        while (Gateway.isRunning()) {
            try {
                //pdu = Gateway.getSessionR().receive(Preference.receiveTimeout);
                pdu = Gateway.getSessionR().receive();
                if (pdu == null) continue;

                if (pdu.isValid()) {
                    if (pdu.isRequest()) {
                        // Logger.println2C("==> " + pdu.debugString());

                        // Make default response
                        Response response = ( (Request) pdu).getResponse();

                        // Reply with default response
                        //Logger.println2C("<== " + response.debugString());
                        Gateway.getSessionR().respond(response);

                        // Add to requestQueue for further processing
                        if (pdu.getCommandId() != Data.ENQUIRE_LINK) {
                            if (pdu.getCommandId() == Data.DELIVER_SM) {
                                dsm = (DeliverSM) pdu;
                                logger.printPDU(dsm);
                                requestQueue.enqueue(pdu);
                            } else {
                                logger.info("Not a Deliver_SM: " + pdu.debugString());
                            }
                        }
                    } else if (pdu.isResponse()) {
                        // Process response
                        if (pdu.getCommandId() == Data.UNBIND_RESP) {
                            UnbindResp response = (UnbindResp) pdu;
                            logger.info("Unbind response " + response.debugString());
                            Gateway.setBoundR(false);
                            //System.exit(0);
                        } else {
                            logger.info("received a response(?), while expect requests only.");
                        }
                    } else {
                        logger.info(
                            "pdu of unknown class (not request nor response) " +
                            "received; Discarding " + pdu.debugString());
                    }
                } else {
                    logger.info("Received an invalid pdu: " + pdu);
                    String filename = "" + System.currentTimeMillis() + "_inv_pdu.dat";
                    logger.info("-->Save to file: " + filename);
                    try {
                        FileTool.saveToFile(pdu.getData().getBuffer(), filename, false);
                    } catch (ValueNotSetException ex) {
                        logger.error("handleEvent: " + ex.getMessage());
                    }
                }
            } catch (IOException ex) {
                logger.alert("DISCONNECTED from SMSC.");
                if (Gateway.isBound()) {
                    Gateway.setBound(false);
                    Gateway.setBoundR(false);
                    Gateway.bind();
                }
            } catch (Exception ex) {
                logger.error("run: " + ex.getMessage());
            }
        }
    }
}




Print Page | Close Window

Forum Software by Web Wiz Forums® version 12.03 - http://www.webwizforums.com
Copyright ©2001-2019 Web Wiz Ltd. - https://www.webwiz.net