package vnet.sms.gateway.nettysupport.test;
import java.util.concurrent.atomic.AtomicInteger;
import vnet.sms.common.messages.GsmPdu;
import vnet.sms.common.messages.LoginRequest;
import vnet.sms.common.messages.LoginResponse;
import vnet.sms.common.messages.PingRequest;
import vnet.sms.common.messages.PingResponse;
import vnet.sms.common.messages.Sms;
import vnet.sms.gateway.nettysupport.transport.incoming.TransportProtocolAdaptingUpstreamChannelHandler;
public class ObjectSerializationTransportProtocolAdaptingUpstreamChannelHandler
extends
TransportProtocolAdaptingUpstreamChannelHandler<Integer, GsmPdu> {
private final AtomicInteger nextWindowId = new AtomicInteger(1);
@Override
protected Integer extractWindowId(final GsmPdu pdu) {
return this.nextWindowId.getAndIncrement();
}
@Override
protected TransportProtocolAdaptingUpstreamChannelHandler.PduType typeOf(
final Object pdu) {
final TransportProtocolAdaptingUpstreamChannelHandler.PduType pduType;
if (pdu instanceof LoginRequest) {
pduType = TransportProtocolAdaptingUpstreamChannelHandler.PduType.LOGIN_REQUEST;
} else if (pdu instanceof LoginResponse) {
pduType = TransportProtocolAdaptingUpstreamChannelHandler.PduType.LOGIN_RESPONSE;
} else if (pdu instanceof PingRequest) {
pduType = TransportProtocolAdaptingUpstreamChannelHandler.PduType.PING_REQUEST;
} else if (pdu instanceof PingResponse) {
pduType = TransportProtocolAdaptingUpstreamChannelHandler.PduType.PING_RESPONSE;
} else if (pdu instanceof Sms) {
pduType = TransportProtocolAdaptingUpstreamChannelHandler.PduType.SMS;
} else {
pduType = TransportProtocolAdaptingUpstreamChannelHandler.PduType.UNKNOWN;
}
return pduType;
}
@Override
protected LoginRequest convertPduToLoginRequest(final GsmPdu loginRequestPdu) {
return (LoginRequest) loginRequestPdu;
}
@Override
protected LoginResponse convertPduToLoginResponse(
final GsmPdu loginResponsePdu) {
return (LoginResponse) loginResponsePdu;
}
@Override
protected PingRequest convertPduToPingRequest(final GsmPdu pingRequestPdu) {
return (PingRequest) pingRequestPdu;
}
@Override
protected PingResponse convertPduToPingResponse(final GsmPdu pingResponsePdu) {
return (PingResponse) pingResponsePdu;
}
@Override
protected Sms convertPduToSms(final GsmPdu smsPdu) {
return (Sms) smsPdu;
}
}