Represents a Protocol Data Unit (PDU). More...
Public Member Functions | |
ProtocolDataUnit (CallContext call) | |
The constructor for outbound PDUs. | |
ProtocolDataUnit (CallContext call, byte[] pduOctets) | |
The constructor for inbound PDUs. | |
void | sendPayload (byte[] payload) |
Sends a specified payload. | |
Static Public Member Functions | |
static ProtocolDataUnit | create (CallContext call, byte[] pduOctets) |
Creates a new PDU of the correct type. | |
Protected Member Functions | |
void | log (String prefix) |
Logs the time-stamp and the inbound/outbound stream sequence number. | |
Protected Attributes | |
CallContext | call |
The call object. | |
OctetBuffer | payload |
The payload data. | |
Long | timeStamp |
The time-stamp. | |
int | sourceCallNumber |
The source call number. | |
int | destinationCallNumber |
The destination call number. | |
int | outSeqNo |
The outbound stream sequence number. | |
int | inSeqNo |
The inbound stream sequence number. | |
int | pduType |
The frame type. | |
int | pduSubclass |
The subclass. | |
Static Protected Attributes | |
static final int | VOICE = 0x02 |
PDU Type: Data Audio Compression Format Raw Voice Data. | |
Package Functions | |
void | setTimestamp (long v) |
Sets the time stamp as long. | |
long | getTimestamp () |
Returns the timestamp as long. | |
void | onArrivedPDU () |
Arrived is called when a packet arrives. | |
void | dump (String prefix) |
Logs this frame. |
Represents a Protocol Data Unit (PDU).
1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Octets: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +---------------+ |1| Source Call Number |0| Destination Call Number | 0 1 2 3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +---------------+ | Time-Stamp | 4 5 6 7 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +---------------+ | Out Seq No | In Seq No |0| PDU Type | Sub Class | 8 9 10 11 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +---------------+ | | 12 ... : Payload : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Definition at line 27 of file ProtocolDataUnit.java.
protocol.ProtocolDataUnit.ProtocolDataUnit | ( | CallContext | call ) |
The constructor for outbound PDUs.
call | The Call object |
Definition at line 64 of file ProtocolDataUnit.java.
References protocol.ProtocolDataUnit.call, protocol.ProtocolDataUnit.destinationCallNumber, protocol.CallContext.getDestinationCallNumber(), protocol.CallContext.getSourceCallNumber(), protocol.CallContext.getTimestamp(), protocol.ProtocolDataUnit.setTimestamp(), and protocol.ProtocolDataUnit.sourceCallNumber.
Referenced by protocol.ProtocolDataUnit.create().
{ this.call = call; this.destinationCallNumber = call.getDestinationCallNumber (); this.sourceCallNumber = call.getSourceCallNumber (); this.setTimestamp( call.getTimestamp () ); }
protocol.ProtocolDataUnit.ProtocolDataUnit | ( | CallContext | call, |
byte[] | pduOctets | ||
) |
The constructor for inbound PDUs.
call | The Call object |
pduOctets | The incoming message bytes |
Definition at line 80 of file ProtocolDataUnit.java.
References protocol.ProtocolDataUnit.call, protocol.ProtocolDataUnit.destinationCallNumber, utils.OctetBuffer.get(), utils.OctetBuffer.getInt(), utils.OctetBuffer.getShort(), protocol.ProtocolDataUnit.inSeqNo, protocol.ProtocolDataUnit.outSeqNo, protocol.ProtocolDataUnit.payload, protocol.ProtocolDataUnit.pduSubclass, protocol.ProtocolDataUnit.pduType, protocol.ProtocolDataUnit.setTimestamp(), utils.OctetBuffer.slice(), protocol.ProtocolDataUnit.sourceCallNumber, utils.OctetBuffer.toInt(), and utils.OctetBuffer.wrap().
{ this.call = call; OctetBuffer buf = OctetBuffer.wrap( pduOctets ); this.sourceCallNumber = buf.getShort (); this.sourceCallNumber &= 0x7FFF; // strip F bit this.destinationCallNumber = buf.getShort(); this.destinationCallNumber &= 0x7FFF; // strip R bit this.setTimestamp( ( buf.getInt () + 0x100000000L ) & 0xFFFFFFFFL ); this.outSeqNo = OctetBuffer.toInt( buf.get() ); this.inSeqNo = OctetBuffer.toInt( buf.get() ); this.pduType = OctetBuffer.toInt( buf.get() ); this.pduSubclass = OctetBuffer.toInt( buf.get() ); this.payload = buf.slice (); }
static ProtocolDataUnit protocol.ProtocolDataUnit.create | ( | CallContext | call, |
byte[] | pduOctets | ||
) | [static] |
Creates a new PDU of the correct type.
call | Call |
pduOctets | byte[] |
Definition at line 126 of file ProtocolDataUnit.java.
References protocol.ProtocolDataUnit.pduType, protocol.ProtocolDataUnit.ProtocolDataUnit(), utils.OctetBuffer.toInt(), and protocol.ProtocolDataUnit.VOICE.
Referenced by protocol.RemotePeer.parsePDU().
{ if ( pduOctets == null || pduOctets.length < 12 ) { return null; } ProtocolDataUnit pdu = null; int pduType = OctetBuffer.toInt( pduOctets[10] ); switch ( pduType ) { case VOICE: pdu = new VoicePDU( call, pduOctets ); break; default: Log.warn( "Unknown PDU type " + pduType ); pdu = new ProtocolDataUnit( call, pduOctets ) {}; break; } return pdu; }
void protocol.ProtocolDataUnit.dump | ( | String | prefix ) | [package] |
Logs this frame.
Definition at line 212 of file ProtocolDataUnit.java.
References protocol.ProtocolDataUnit.destinationCallNumber, protocol.ProtocolDataUnit.inSeqNo, protocol.ProtocolDataUnit.outSeqNo, protocol.ProtocolDataUnit.pduSubclass, protocol.ProtocolDataUnit.pduType, protocol.ProtocolDataUnit.sourceCallNumber, and protocol.ProtocolDataUnit.timeStamp.
Referenced by protocol.VoicePDU.onArrivedPDU(), protocol.ProtocolDataUnit.onArrivedPDU(), and protocol.VoicePDUSender.send().
{ if ( ! Log.isEnabled( Log.VERB ) ) { return; } StringBuffer sb = new StringBuffer (); if ( prefix != null ) { sb.append( prefix ).append( " " ); } sb.append( "PDU:" ); sb.append( "\n Source Call = " ).append( sourceCallNumber ); sb.append( "\n Dest Call = " ).append( destinationCallNumber ); sb.append( "\n Timestamp = " ).append( timeStamp ); sb.append( "\n Out Seq No = " ).append( outSeqNo ); sb.append( "\n In Seq No = " ).append( inSeqNo ); sb.append( "\n PDU Type = " ).append( pduType ); sb.append( "\n Subclass = " ).append( pduSubclass ); Log.verb( sb.toString () ); }
long protocol.ProtocolDataUnit.getTimestamp | ( | ) | [package] |
Returns the timestamp as long.
Definition at line 114 of file ProtocolDataUnit.java.
References protocol.ProtocolDataUnit.timeStamp.
Referenced by protocol.ProtocolDataUnit.log(), protocol.VoicePDU.onArrivedPDU(), and protocol.ProtocolDataUnit.sendPayload().
void protocol.ProtocolDataUnit.log | ( | String | prefix ) | [protected] |
Logs the time-stamp and the inbound/outbound stream sequence number.
prefix | Text to include |
Reimplemented in protocol.VoicePDU.
Definition at line 196 of file ProtocolDataUnit.java.
References protocol.ProtocolDataUnit.call, protocol.ProtocolDataUnit.getTimestamp(), protocol.CallContext.getTimestamp(), protocol.ProtocolDataUnit.inSeqNo, and protocol.ProtocolDataUnit.outSeqNo.
Referenced by protocol.ProtocolDataUnit.sendPayload().
{ StringBuffer sb = new StringBuffer( "Time: " ); sb.append( this.call.getTimestamp () ).append( ", " ); sb.append( prefix ); sb.append( ", Timestamp: " ).append( this.getTimestamp () ); sb.append( ", iseq: " ).append( inSeqNo ); sb.append( ", oseq: " ).append( outSeqNo ); Log.debug( sb.toString () ); }
void protocol.ProtocolDataUnit.onArrivedPDU | ( | ) | [package] |
Arrived is called when a packet arrives.
This method doesn't do anything more than dumping the frame. It should be overridden in derived class.
Reimplemented in protocol.VoicePDU.
Definition at line 186 of file ProtocolDataUnit.java.
References protocol.ProtocolDataUnit.dump().
Referenced by protocol.RemotePeer.parsePDU().
{ dump( "Inbound" ); }
void protocol.ProtocolDataUnit.sendPayload | ( | byte[] | payload ) |
Sends a specified payload.
Payload represents the data field in the frame.
payload | The payload data |
Definition at line 156 of file ProtocolDataUnit.java.
References utils.OctetBuffer.allocate(), protocol.ProtocolDataUnit.call, protocol.ProtocolDataUnit.destinationCallNumber, protocol.CallContext.getInSeqNo(), protocol.CallContext.getOutSeqNoInc(), protocol.ProtocolDataUnit.getTimestamp(), protocol.ProtocolDataUnit.inSeqNo, protocol.ProtocolDataUnit.log(), protocol.ProtocolDataUnit.outSeqNo, protocol.ProtocolDataUnit.pduSubclass, protocol.ProtocolDataUnit.pduType, utils.OctetBuffer.put(), utils.OctetBuffer.putChar(), utils.OctetBuffer.putInt(), protocol.CallContext.send(), and protocol.ProtocolDataUnit.sourceCallNumber.
Referenced by protocol.VoicePDUSender.send().
{ this.outSeqNo = this.call.getOutSeqNoInc(); this.inSeqNo = this.call.getInSeqNo(); OctetBuffer pdu = OctetBuffer.allocate( payload.length + 12 ); pdu.putChar( (char) ( this.sourceCallNumber | 0x8000 ) ); pdu.putChar( (char) this.destinationCallNumber ); long ts = this.getTimestamp (); ts = ( (0x100000000L & ts) > 0 ) ? ts - 0x100000000L : ts; pdu.putInt( (int) ts ); pdu.put( (byte) outSeqNo ); pdu.put( (byte) inSeqNo ); pdu.put( (byte) pduType ); pdu.put( (byte) pduSubclass ); pdu.put( payload ); log( "Sent" ); this.call.send( pdu ); }
void protocol.ProtocolDataUnit.setTimestamp | ( | long | v ) | [package] |
Sets the time stamp as long.
Definition at line 106 of file ProtocolDataUnit.java.
References protocol.ProtocolDataUnit.timeStamp.
Referenced by protocol.ProtocolDataUnit.ProtocolDataUnit(), and protocol.VoicePDUSender.send().
{ this.timeStamp = new Long( v ); }
CallContext protocol.ProtocolDataUnit.call [protected] |
The call object.
Definition at line 33 of file ProtocolDataUnit.java.
Referenced by protocol.ProtocolDataUnit.log(), protocol.VoicePDU.onArrivedPDU(), protocol.ProtocolDataUnit.ProtocolDataUnit(), and protocol.ProtocolDataUnit.sendPayload().
int protocol.ProtocolDataUnit.destinationCallNumber [protected] |
The destination call number.
Definition at line 45 of file ProtocolDataUnit.java.
Referenced by protocol.ProtocolDataUnit.dump(), protocol.RemotePeer.parsePDU(), protocol.ProtocolDataUnit.ProtocolDataUnit(), and protocol.ProtocolDataUnit.sendPayload().
int protocol.ProtocolDataUnit.inSeqNo [protected] |
The inbound stream sequence number.
Definition at line 51 of file ProtocolDataUnit.java.
Referenced by protocol.ProtocolDataUnit.dump(), protocol.ProtocolDataUnit.log(), protocol.ProtocolDataUnit.ProtocolDataUnit(), and protocol.ProtocolDataUnit.sendPayload().
int protocol.ProtocolDataUnit.outSeqNo [protected] |
The outbound stream sequence number.
Definition at line 48 of file ProtocolDataUnit.java.
Referenced by protocol.CallContext.addIn(), protocol.ProtocolDataUnit.dump(), protocol.ProtocolDataUnit.log(), protocol.ProtocolDataUnit.ProtocolDataUnit(), and protocol.ProtocolDataUnit.sendPayload().
OctetBuffer protocol.ProtocolDataUnit.payload [protected] |
The payload data.
Definition at line 36 of file ProtocolDataUnit.java.
Referenced by protocol.VoicePDU.onArrivedPDU(), and protocol.ProtocolDataUnit.ProtocolDataUnit().
int protocol.ProtocolDataUnit.pduSubclass [protected] |
The subclass.
Definition at line 57 of file ProtocolDataUnit.java.
Referenced by protocol.ProtocolDataUnit.dump(), protocol.ProtocolDataUnit.ProtocolDataUnit(), protocol.ProtocolDataUnit.sendPayload(), and protocol.VoicePDU.VoicePDU().
int protocol.ProtocolDataUnit.pduType [protected] |
The frame type.
Definition at line 54 of file ProtocolDataUnit.java.
Referenced by protocol.ProtocolDataUnit.create(), protocol.ProtocolDataUnit.dump(), protocol.ProtocolDataUnit.ProtocolDataUnit(), protocol.ProtocolDataUnit.sendPayload(), and protocol.VoicePDU.VoicePDU().
int protocol.ProtocolDataUnit.sourceCallNumber [protected] |
The source call number.
Definition at line 42 of file ProtocolDataUnit.java.
Referenced by protocol.ProtocolDataUnit.dump(), protocol.RemotePeer.parsePDU(), protocol.ProtocolDataUnit.ProtocolDataUnit(), and protocol.ProtocolDataUnit.sendPayload().
Long protocol.ProtocolDataUnit.timeStamp [protected] |
The time-stamp.
Definition at line 39 of file ProtocolDataUnit.java.
Referenced by protocol.ProtocolDataUnit.dump(), protocol.ProtocolDataUnit.getTimestamp(), and protocol.ProtocolDataUnit.setTimestamp().
final int protocol.ProtocolDataUnit.VOICE = 0x02 [static, protected] |
PDU Type: Data Audio Compression Format Raw Voice Data.
Definition at line 30 of file ProtocolDataUnit.java.
Referenced by protocol.ProtocolDataUnit.create(), and protocol.VoicePDU.VoicePDU().