/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.smscserver.smsclet;
/**
* The purpose of the SMPP bind operation is to register an instance of an ESME with the SMSC system and request an SMPP
* session over this network connection for the submission or delivery of messages. Thus, the Bind operation may be
* viewed as a form of SMSC login request to authenticate the ESME entity wishing to establish a connection.
* <p>
* As described previously, an ESME may bind to the SMSC as either a Transmitter (called ESME Transmitter), a Receiver
* (called ESME Receiver) or a Transceiver (called ESME Transceiver). There are three SMPP bind PDUs to support the
* various modes of operation, namely bind_transmitter, bind_transceiver and bind_receiver. The command_id field setting
* specifies which PDU is being used.
* <p>
* An ESME may bind as both an SMPP Transmitter and Receiver using separate bind_transmitter and bind_receiver
* operations (having first established two separate network connections). Alternatively an ESME can also bind as a
* Transceiver having first established a single network connection.
* <p>
* If an SMSC does not support the bind_transmitter and bind_receiver operations then it should return a response
* message with an ”Invalid Command ID” error and the ESME should reattempt to bind using the bind_transceiver
* operation. Similarly if an SMSC does not support the bind_transceiver command then it should return a response
* message with an ”Invalid Command ID” error and the ESME should reattempt to bind using the bind_transmitter or
* bind_receiver operations or both bind_transmitter and bind_receiver operations as appropriate.
* <ul>
* ESME Transmitter
* <li>An ESME bound as a Transmitter is authorised to send short messages to the SMSC and to receive the corresponding
* SMPP responses from the SMSC. An ESME indicates its desire not to receive (mobile) originated messages from other
* SME’s (e.g. mobile stations) by binding as a Transmitter.
* <li>ESME Receiver An ESME bound as a Receiver is authorised to receive short messages from the SMSC and to return the
* corresponding SMPP message responses to the SMSC.
* <li>ESME Transceiver An ESME bound as a Transceiver is allowed to send messages to the SMSC and receive messages from
* the SMSC over a single SMPP session.
*
* @version $Rev$ $Date$
*/
public interface BindRequest extends SmscRequest {
/**
* Returns the numbering Plan Indicator for ESME address. If not known set to NULL.
*
* @return numbering Plan Indicator for ESME address or NULL
*/
int getAddressNpi();
/**
* Returns the ESME address. If not known set to NULL.
*
* @return the ESME address or NULL
*/
String getAddressRange();
/**
* Returns the type of Number of the ESME address. If not known set to NULL.
*
* @return the type of Number of the ESME address or NULL
*/
int getAddressTon();
/**
* The password may be used by the SMSC to authenticate the ESME requesting to bind.
* <p>
* The password is used for authentication to secure SMSC access. The ESME may set the password to NULL to gain
* insecure access (if allowed by SMSC administration).
*
* @return the password or NULL
*/
String getPassword();
/**
* Returns the identification of the ESME system requesting to bind with the SMSC.
* <p>
* The recommended use of system id is to identify the binding entity, e.g., "InternetGW" in the case of an Internet
* Gateway or "VMS" for a Voice Mail System.
*
* @return the identification of the type of ESME system requesting to bind with the SMSC
*/
String getSystemId();
/**
* Returns the type of ESME system requesting to bind with the SMSC.
* <p>
* The system_type (optional) may be used to categorize the system, e.g., "EMAIL", "WWW", etc.
*
* @return the type of ESME system requesting to bind as a transmitter with the SMSC
*/
String getSystemType();
}