package org.ifsoft.rtp; import org.ifsoft.*; import java.util.*; import java.util.ArrayList; public class RTCPAPPPacket extends RTCPPacket { private Byte __data[]; private Byte __name[]; private Byte _subType; private Long _synchronizationSource; protected void deserialize() throws Exception { setSubType(super.getFirstByte()); setSynchronizationSource(BitAssistant.toLongFromIntegerNetwork(super.getPayload(), Integer.valueOf(0))); setName(BitAssistant.subArray(super.getPayload(), Integer.valueOf(4), Integer.valueOf(4))); if(ArrayExtensions.getLength(super.getPayload()).intValue() > 8) setData(BitAssistant.subArray(super.getPayload(), Integer.valueOf(8), Integer.valueOf(ArrayExtensions.getLength(super.getPayload()).intValue() - 8))); } RTCPAPPPacket() { _subType = Byte.valueOf((byte)0); _synchronizationSource = Long.valueOf(0L); __name = new Byte[4]; initializeName(); } public RTCPAPPPacket(Long synchronizationSource) { _subType = Byte.valueOf((byte)0); _synchronizationSource = Long.valueOf(0L); __name = new Byte[4]; initializeName(); setSynchronizationSource(synchronizationSource); } public Byte[] getData() { return __data; } public Byte[] getName() { return __name; } public Byte getSubType() { return _subType; } public Long getSynchronizationSource() { return _synchronizationSource; } private void initializeName() { for(Integer i = Integer.valueOf(0); i.intValue() < ArrayExtensions.getLength(__name).intValue();) { __name[i.intValue()] = Byte.valueOf((byte)0); Integer integer = i; Integer integer1 = i = Integer.valueOf(i.intValue() + 1); Integer _tmp = integer; } } protected void serialize() { super.setFirstByte(getSubType()); ArrayList list = new ArrayList(); ArrayListExtensions.addRange(list, BitAssistant.getIntegerBytesFromLongNetwork(getSynchronizationSource())); ArrayListExtensions.addRange(list, getName()); if(getData() != null) ArrayListExtensions.addRange(list, getData()); super.setPayload((Byte[])list.toArray(new Byte[0])); } public void setData(Byte value[]) throws Exception { if(value != null && ArrayExtensions.getLength(value).intValue() % 4 != 0) { throw new Exception("Data must be a multiple of four bytes."); } else { __data = value; return; } } public void setName(Byte value[]) throws Exception { if(value == null || ArrayExtensions.getLength(value).intValue() != 4) { throw new Exception("Name must be four bytes interpreted as a sequence of four ASCII characters."); } else { __name = value; return; } } public void setSubType(Byte value) { _subType = value; } private void setSynchronizationSource(Long value) { _synchronizationSource = value; } }