use of org.marre.sms.SmsDcs in project SMSGate by Lihuanghe.
the class CmppSubmitRequestMessageCodec method decode.
@Override
protected void decode(ChannelHandlerContext ctx, Message msg, List<Object> out) throws Exception {
int commandId = msg.getHeader().getCommandId();
if (packetType.getCommandId() != commandId) {
// 不解析,交给下一个codec
out.add(msg);
return;
}
CmppSubmitRequestMessage requestMessage = new CmppSubmitRequestMessage(msg.getHeader());
ByteBuf bodyBuffer = Unpooled.wrappedBuffer(msg.getBodyBuffer());
requestMessage.setMsgid(DefaultMsgIdUtil.bytes2MsgId(toArray(bodyBuffer, CmppSubmitRequest.MSGID.getLength())));
requestMessage.setPktotal(bodyBuffer.readUnsignedByte());
requestMessage.setPknumber(bodyBuffer.readUnsignedByte());
requestMessage.setRegisteredDelivery(bodyBuffer.readUnsignedByte());
requestMessage.setMsglevel(bodyBuffer.readUnsignedByte());
requestMessage.setServiceId(bodyBuffer.readCharSequence(CmppSubmitRequest.SERVICEID.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setFeeUserType(bodyBuffer.readUnsignedByte());
requestMessage.setFeeterminalId(bodyBuffer.readCharSequence(CmppSubmitRequest.FEETERMINALID.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setFeeterminaltype(bodyBuffer.readUnsignedByte());
requestMessage.setTppid(bodyBuffer.readUnsignedByte());
requestMessage.setTpudhi(bodyBuffer.readUnsignedByte());
requestMessage.setMsgfmt(new SmsDcs((byte) bodyBuffer.readUnsignedByte()));
requestMessage.setMsgsrc(bodyBuffer.readCharSequence(CmppSubmitRequest.MSGSRC.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setFeeType(bodyBuffer.readCharSequence(CmppSubmitRequest.FEETYPE.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setFeeCode(bodyBuffer.readCharSequence(CmppSubmitRequest.FEECODE.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setValIdTime(bodyBuffer.readCharSequence(CmppSubmitRequest.VALIDTIME.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setAtTime(bodyBuffer.readCharSequence(CmppSubmitRequest.ATTIME.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setSrcId(bodyBuffer.readCharSequence(CmppSubmitRequest.SRCID.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
short destUsrtl = bodyBuffer.readUnsignedByte();
String[] destTermId = new String[destUsrtl];
for (int i = 0; i < destUsrtl; i++) {
destTermId[i] = bodyBuffer.readCharSequence(CmppSubmitRequest.DESTTERMINALID.getLength(), GlobalConstance.defaultTransportCharset).toString().trim();
}
requestMessage.setDestterminalId(destTermId);
requestMessage.setDestterminaltype(bodyBuffer.readUnsignedByte());
short msgLength = (short) (bodyBuffer.readUnsignedByte() & 0xffff);
byte[] contentbytes = new byte[msgLength];
bodyBuffer.readBytes(contentbytes);
requestMessage.setMsgContentBytes(contentbytes);
requestMessage.setMsgLength((short) msgLength);
requestMessage.setLinkID(bodyBuffer.readCharSequence(CmppSubmitRequest.LINKID.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
out.add(requestMessage);
ReferenceCountUtil.release(bodyBuffer);
}
use of org.marre.sms.SmsDcs in project SMSGate by Lihuanghe.
the class TestCmpp20SubmitRequestMessageCodec method testCodec.
@Test
public void testCodec() {
CmppSubmitRequestMessage msg = new CmppSubmitRequestMessage();
msg.setDestterminalId(new String[] { "13800138000", "13800138001", "138001380002" });
msg.setLinkID("0000");
String content = UUID.randomUUID().toString();
msg.setMsgContent(content);
msg.setMsgContent(new SmsTextMessage("你好,我是闪信!", new SmsDcs((byte) 15)));
msg.setMsgid(new MsgId());
msg.setServiceId("10086");
msg.setSrcId("10086");
ByteBuf buf = encode(msg);
ByteBuf copybuf = buf.copy();
int length = buf.readableBytes();
Assert.assertEquals(length, buf.readInt());
Assert.assertEquals(msg.getPacketType().getCommandId(), buf.readInt());
Assert.assertEquals(msg.getHeader().getSequenceId(), buf.readInt());
CmppSubmitRequestMessage result = decode(copybuf);
System.out.println(result);
Assert.assertEquals(msg.getHeader().getSequenceId(), result.getHeader().getSequenceId());
Assert.assertArrayEquals(msg.getDestterminalId(), result.getDestterminalId());
Assert.assertEquals(msg.getMsgContent(), result.getMsgContent());
Assert.assertEquals(msg.getServiceId(), result.getServiceId());
}
use of org.marre.sms.SmsDcs in project SMSGate by Lihuanghe.
the class TestCmppSubmitRequestMessageCodec method testGBKMsg.
@Test
public void testGBKMsg() {
CmppSubmitRequestMessage msg = createTestReq("");
msg.setMsgContent(new SmsTextMessage("有没有发现,使用模型的表达要清晰易懂很多,而且也不需要做关于组合品的判断了,因为我们在系统中引入了更加贴近现实的对象模型(CombineBackO123456", new SmsDcs((byte) 0x0f)));
CmppSubmitRequestMessage ret = testWapCodec(msg);
Assert.assertEquals(msg.getMsgContent(), ret.getMsgContent());
}
use of org.marre.sms.SmsDcs in project SMSGate by Lihuanghe.
the class SgipSubmitRequestMessageCodec method decode.
@Override
protected void decode(ChannelHandlerContext ctx, Message msg, List<Object> out) throws Exception {
int commandId = msg.getHeader().getCommandId();
if (packetType.getCommandId() != commandId) {
// 不解析,交给下一个codec
out.add(msg);
return;
}
SgipSubmitRequestMessage requestMessage = new SgipSubmitRequestMessage(msg.getHeader());
requestMessage.setTimestamp(msg.getTimestamp());
ByteBuf bodyBuffer = Unpooled.wrappedBuffer(msg.getBodyBuffer());
requestMessage.setSpnumber(bodyBuffer.readCharSequence(SgipSubmitRequest.SPNUMBER.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setChargenumber(bodyBuffer.readCharSequence(SgipSubmitRequest.CHARGENUMBER.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
int usercount = bodyBuffer.readUnsignedByte();
String[] nums = new String[usercount];
for (int i = 0; i < usercount; i++) {
nums[i] = bodyBuffer.readCharSequence(SgipSubmitRequest.USERNUMBER.getLength(), GlobalConstance.defaultTransportCharset).toString().trim();
}
requestMessage.setUsernumber(nums);
requestMessage.setCorpid(bodyBuffer.readCharSequence(SgipSubmitRequest.CORPID.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setServicetype(bodyBuffer.readCharSequence(SgipSubmitRequest.SERVICETYPE.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setFeetype(bodyBuffer.readUnsignedByte());
requestMessage.setFeevalue(bodyBuffer.readCharSequence(SgipSubmitRequest.FEEVALUE.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setGivenvalue(bodyBuffer.readCharSequence(SgipSubmitRequest.GIVENVALUE.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setAgentflag(bodyBuffer.readUnsignedByte());
requestMessage.setMorelatetomtflag(bodyBuffer.readUnsignedByte());
requestMessage.setPriority(bodyBuffer.readUnsignedByte());
requestMessage.setExpiretime(bodyBuffer.readCharSequence(SgipSubmitRequest.EXPIRETIME.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setScheduletime(bodyBuffer.readCharSequence(SgipSubmitRequest.SCHEDULETIME.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setReportflag(bodyBuffer.readUnsignedByte());
requestMessage.setTppid(bodyBuffer.readUnsignedByte());
requestMessage.setTpudhi(bodyBuffer.readUnsignedByte());
requestMessage.setMsgfmt(new SmsDcs((byte) bodyBuffer.readUnsignedByte()));
requestMessage.setMessagetype(bodyBuffer.readUnsignedByte());
int msgLength = bodyBuffer.readInt();
byte[] contentbytes = new byte[msgLength];
bodyBuffer.readBytes(contentbytes);
requestMessage.setMsgContentBytes(contentbytes);
requestMessage.setMessagelength(msgLength);
requestMessage.setReserve(bodyBuffer.readCharSequence(SgipSubmitRequest.RESERVE.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
out.add(requestMessage);
ReferenceCountUtil.release(bodyBuffer);
}
use of org.marre.sms.SmsDcs in project SMSGate by Lihuanghe.
the class SgipDeliverRequestMessageCodec method decode.
@Override
protected void decode(ChannelHandlerContext ctx, Message message, List<Object> out) throws Exception {
int commandId = message.getHeader().getCommandId();
if (packetType.getCommandId() != commandId) {
// 不解析,交给下一个codec
out.add(message);
return;
}
ByteBuf bodyBuffer = Unpooled.wrappedBuffer(message.getBodyBuffer());
SgipDeliverRequestMessage requestMessage = new SgipDeliverRequestMessage(message.getHeader());
requestMessage.setTimestamp(message.getTimestamp());
requestMessage.setUsernumber(bodyBuffer.readCharSequence(SgipDeliverRequest.USERNUMBER.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setSpnumber(bodyBuffer.readCharSequence(SgipDeliverRequest.SPNUMBER.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
requestMessage.setTppid(bodyBuffer.readUnsignedByte());
requestMessage.setTpudhi(bodyBuffer.readUnsignedByte());
requestMessage.setMsgfmt(new SmsDcs((byte) bodyBuffer.readUnsignedByte()));
int frameLength = bodyBuffer.readInt();
byte[] contentbytes = new byte[frameLength];
bodyBuffer.readBytes(contentbytes);
requestMessage.setMsgContentBytes(contentbytes);
requestMessage.setMessagelength(frameLength);
requestMessage.setReserve(bodyBuffer.readCharSequence(SgipDeliverRequest.RESERVE.getLength(), GlobalConstance.defaultTransportCharset).toString().trim());
out.add(requestMessage);
ReferenceCountUtil.release(bodyBuffer);
}
Aggregations