headerpacket.java
来自「java语言开发的P2P流媒体系统」· Java 代码 · 共 125 行
JAVA
125 行
/*
* P2P-Radio - Peer to peer streaming system
* Project homepage: http://p2p-radio.sourceforge.net/
* Copyright (C) 2003-2004 Michael Kaufmann <hallo@michael-kaufmann.ch>
*
* ---------------------------------------------------------------------------
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* ---------------------------------------------------------------------------
*/
package p2pradio.packets;
public class HeaderPacket extends MetaStreamPacket
{
// Der Header wird nicht noch extra in einem
// eigenen Array gespeichert
private int headerOffset;
private int headerLength;
public HeaderPacket(long seqNr, long timeStamp, byte header[])
{
this(new byte[getMaxLength() + header.length], seqNr, timeStamp, header, header.length);
}
public HeaderPacket(byte content[], long seqNr, long timeStamp, byte[] header)
{
this(content, seqNr, timeStamp, header, header.length);
}
public HeaderPacket(long seqNr, long timeStamp, byte header[], int headerLength)
{
this(new byte[getMaxLength() + headerLength], seqNr, timeStamp, header, headerLength);
}
public HeaderPacket(byte content[], long seqNr, long timeStamp, byte[] header, int headerLength)
{
this(content, seqNr, timeStamp, header, 0, headerLength);
}
public HeaderPacket(long seqNr, long timeStamp, byte header[], int headerOffset, int headerLength)
{
this(new byte[getMaxLength() + headerLength], seqNr, timeStamp, header, headerOffset, headerLength);
}
protected HeaderPacket(byte content[], long seqNr, long timeStamp, byte[] header, int headerOffset, int headerLength)
{
super(Packet.HEADER, content, seqNr, timeStamp);
// L鋘ge des Headers speichern
writeInt(headerLength);
this.headerOffset = offset;
this.headerLength = headerLength;
checkBytesLeft(headerLength);
// Header kopieren
System.arraycopy(header, headerOffset, content, offset, headerLength);
offset += headerLength;
}
protected HeaderPacket(byte content[], int contentLength)
{
super(content, contentLength);
// L鋘ge des Headers lesen
int length = readInt();
checkBytesLeft(length);
headerOffset = offset;
headerLength = length;
offset += length;
}
// Die Methode getMaxLength() gibt hier nur eine
// Mindestl鋘ge zur點k
// Sie ist "public", weil sie von Source.java gebraucht wird
public static int getMaxLength()
{
return StreamPacket.getMaxLength() + 4;
}
protected String getTypeString()
{
return "Header"; //$NON-NLS-1$
}
public byte[] getHeader()
{
return content;
}
public int getHeaderOffset()
{
return headerOffset;
}
public int getHeaderLength()
{
return headerLength;
}
public byte[] createDataArray()
{
byte[] header = new byte[headerLength];
System.arraycopy(content, headerOffset, header, 0, headerLength);
return header;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?