Comments (1)
Is it very bad solution?
package utils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.log4j.BasicConfigurator;
import org.jsmpp.InvalidResponseException;
import org.jsmpp.PDUException;
import org.jsmpp.bean.AlertNotification;
import org.jsmpp.bean.BindType;
import org.jsmpp.bean.DataCodings;
import org.jsmpp.bean.DataSm;
import org.jsmpp.bean.DeliverSm;
import org.jsmpp.bean.ESMClass;
import org.jsmpp.bean.MessageType;
import org.jsmpp.bean.NumberingPlanIndicator;
import org.jsmpp.bean.OptionalParameter;
import org.jsmpp.bean.OptionalParameter.Receipted_message_id;
import org.jsmpp.bean.OptionalParameter.Message_state;
import org.jsmpp.bean.OptionalParameter.Tag;
import org.jsmpp.bean.RegisteredDelivery;
import org.jsmpp.bean.SMSCDeliveryReceipt;
import org.jsmpp.bean.TypeOfNumber;
import org.jsmpp.extra.NegativeResponseException;
import org.jsmpp.extra.ProcessRequestException;
import org.jsmpp.extra.ResponseTimeoutException;
import org.jsmpp.session.BindParameter;
import org.jsmpp.session.DataSmResult;
import org.jsmpp.session.MessageReceiverListener;
import org.jsmpp.session.SMPPSession;
import org.jsmpp.session.Session;
import org.jsmpp.util.AbsoluteTimeFormatter;
import org.jsmpp.util.TimeFormatter;
public class AsyncDelivery
{
private static TimeFormatter timeFormatter = new AbsoluteTimeFormatter();
final AtomicInteger counter = new AtomicInteger();
private SMPPSession session = null;
private String operator;
private String remoteIpAddress;
private Integer remotePort;
private String user;
private String password;
private BindParameter bindParam;
//Database query size
private int size;
//Sleep after each segment
private int segmentSleep=100;
//Sleep in loop
private int loopSleep=100;
//Operator thread
private int executorId;
//Prefix for response id to unique message id between operators
private String responsePrefix;
public AsyncDelivery(String configFileName)
{
if (this.setConfigValues(configFileName)==true)
{
this.bindParam = new BindParameter(BindType.BIND_TRX, this.user, this.password, "cp",TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.UNKNOWN, null);
try
{
this.session = new SMPPSession(this.remoteIpAddress, this.remotePort, this.bindParam);
}
catch(Exception e)
{
System.out.println("Can't create session.");
System.exit(0);
}
this.session.setMessageReceiverListener(new MessageReceiverListener()
{
public void onAcceptDeliverSm(DeliverSm deliverSm) throws ProcessRequestException
{
if (MessageType.SMSC_DEL_RECEIPT.containedIn(deliverSm.getEsmClass()))
{
counter.incrementAndGet();
// delivery receipt
try
{
//DeliveryReceipt delReceipt = deliverSm.getShortMessageAsDeliveryReceipt();
//long id = Long.parseLong(delReceipt.getId()) & 0xffffffff;
//String messageId = Long.toString(id, 16).toUpperCase();
//System.out.println("Receiving delivery receipt for message '" + messageId + "' : " + delReceipt);
OptionalParameter.Receipted_message_id parameterId = (Receipted_message_id) deliverSm.getOptionalParameter(Tag.RECEIPTED_MESSAGE_ID);
OptionalParameter.Message_state parameterState = (Message_state) deliverSm.getOptionalParameter(Tag.MESSAGE_STATE);
System.out.println("messageId: " + parameterId.getValueAsString());
System.out.println("messageState: " + parameterState.getMessageState().name());
}
catch (Exception e)
{
System.err.println("Failed getting delivery receipt");
e.printStackTrace();
}
}
else
{
// regular short message
System.out.println("Receiving message : " + new String(deliverSm.getShortMessage()));
}
}
public void onAcceptAlertNotification(AlertNotification alertNotification)
{
}
public DataSmResult onAcceptDataSm(DataSm dataSm, Session source)
throws ProcessRequestException
{
// TODO Auto-generated method stub
return null;
}
});
}
else
{
System.out.println("Nepavyko nustatyti parametrų iš config.txt failo!");
System.exit(0);
}
}
public static void main(String[] args)
{
//Log activation
//BasicConfigurator.configure();
final AsyncDelivery main = new AsyncDelivery("config_bite.txt");
// Now we will send 50 message asynchronously with max outstanding messages 10.
ExecutorService execService = Executors.newFixedThreadPool(6);
// requesting delivery report
final RegisteredDelivery registeredDelivery = new RegisteredDelivery();
registeredDelivery.setSMSCDeliveryReceipt(SMSCDeliveryReceipt.SUCCESS_FAILURE);
final int maxMessage = 10;
for (int i = 0; i < maxMessage; i++)
{
execService.execute(new Runnable()
{
public void run()
{
try
{
String messageId = main.session.submitShortMessage("CMT", TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.UNKNOWN, "NKC", TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.UNKNOWN, "37067425942", new ESMClass(), (byte)0, (byte)1, timeFormatter.format(new Date()), null, registeredDelivery, (byte)0, DataCodings.ZERO, (byte)0, ("jSMPP "+new Date().getTime()).getBytes());
System.out.println("Message submitted, message_id is " + messageId);
}
catch (PDUException e)
{
System.err.println("Invalid PDU parameter");
e.printStackTrace();
main.counter.incrementAndGet();
}
catch (ResponseTimeoutException e)
{
System.err.println("Response timeout");
e.printStackTrace();
main.counter.incrementAndGet();
}
catch (InvalidResponseException e)
{
// Invalid response
System.err.println("Receive invalid respose");
e.printStackTrace();
main.counter.incrementAndGet();
}
catch (NegativeResponseException e)
{
// Receiving negative response (non-zero command_status)
System.err.println("Receive negative response");
e.printStackTrace();
main.counter.incrementAndGet();
}
catch (IOException e)
{
System.err.println("IO error occur");
e.printStackTrace();
main.counter.incrementAndGet();
}
}
});
}
while (/*main.counter.get() != maxMessage*/1==1)
{
try { Thread.sleep(100); } catch (InterruptedException e) { }
}
//main.session.unbindAndClose();
//execService.shutdown();
}
public boolean setConfigValues(String configFileName)
{
//Skaitom failą config.txt ir nustatymome parametrus
boolean ret=true;
try
{
File myObj = new File(configFileName);
Scanner myReader = new Scanner(myObj);
while (myReader.hasNextLine())
{
String line = myReader.nextLine();
System.out.println(line);
String[] params = line.split(":");
if (params[0].equals("remoteIpAddress"))
{
this.remoteIpAddress=params[1];
}
else if (params[0].equals("remotePort"))
{
this.remotePort = Integer.parseInt(params[1]);
}
else if (params[0].equals("user"))
{
this.user=params[1];
}
else if (params[0].equals("password"))
{
this.password=params[1];
}
else if (params[0].equals("log_folder"))
{
db.PrintLog.logFolder=params[1];
}
else if (params[0].equals("operator"))
{
this.operator=params[1];
}
else if (params[0].equals("size"))
{
this.size=Integer.parseInt(params[1]);
}
else if (params[0].equals("executor_id"))
{
this.executorId=Integer.parseInt(params[1]);
System.out.println("executorId: " + this.executorId);
}
else if (params[0].equals("segment_sleep"))
{
this.segmentSleep=Integer.parseInt(params[1]);
System.out.println("segmentSleep: " + this.segmentSleep);
}
else if (params[0].equals("loop_sleep"))
{
this.loopSleep=Integer.parseInt(params[1]);
System.out.println("loopSleep: " + this.loopSleep);
}
else if (params[0].equals("response_prefix"))
{
this.responsePrefix=params[1];
System.out.println("response_prefix: " + this.responsePrefix);
}
}
myReader.close();
if (this.remoteIpAddress==null || this.remoteIpAddress.isEmpty()) ret=false;
if (this.remotePort==null) ret=false;
if (this.user==null || this.user.isEmpty()) ret=false;
if (this.password==null || this.password.isEmpty()) ret=false;
}
catch (FileNotFoundException e)
{
System.out.println(e.toString());
ret = false;
}
return ret;
}
}
from jsmpp.
Related Issues (20)
- jcharset is GPL license that is incompatible with the Apache 2.0 license HOT 4
- 7bit long message split into 153 bytes using UDH 1 byte HOT 1
- Example how to receive large messages? HOT 3
- What does setting higher transaction time using setTransactionTimer() entail?
- org.jsmpp.extra.NegativeResponseException: Negative response 00000094 found HOT 2
- Call not going to MessageReceiverListener HOT 1
- jSMPP v3 HOT 2
- Secured SMPP implementation HOT 1
- [help wanted] How to parse decimal id in deliver receipt with leading zero HOT 2
- Send a long message over 255 HOT 2
- Receive negative bind response: Negative response 00000005 found HOT 1
- Deadlock when closing session in SessionStateListener HOT 6
- Use same binding again HOT 1
- No option to set a timeout when creating a socket to connect to the SMPP gateway
- Invalid TLV handling
- No response after waiting for 2000 millis when executing deliver_sm
- Missing smpp status code ESME_RCNTSUBDL
- Delivery Receipt not receiving on time at the client side.
- Openjdk21 compatibility
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jsmpp.