End of protocol implementation
This commit is contained in:
parent
462b376eee
commit
4fec744616
@ -73,8 +73,8 @@ public class FilePart extends Payload {
|
||||
* @throws InternalError
|
||||
*/
|
||||
protected byte[] toDatagram() throws InternalError {
|
||||
//TODO : calculate payload size
|
||||
int size = 24 + filename.length() + 1;
|
||||
// compute payload size
|
||||
int size = 28 + filename.length() + partialContent.length;
|
||||
byte[] datagram = new byte[size]; // java initialize all to zero
|
||||
// size is keep blank (ProtocolP2PDatagram will handle it)
|
||||
// set request/response code
|
||||
@ -87,14 +87,22 @@ public class FilePart extends Payload {
|
||||
BytesArrayTools.write(datagram, 16, totalSize);
|
||||
// write filename’s size to datagram
|
||||
BytesArrayTools.write(datagram, 24, filename.length());
|
||||
//TODO : write filename to datagram
|
||||
// write filename to datagram
|
||||
try {
|
||||
byte[] bFilename = filename.getBytes("UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new InternalError();
|
||||
}
|
||||
//TODO : write partialContent to datagram
|
||||
|
||||
int i = filename.length() + 24;
|
||||
for (byte b : bFilename) {
|
||||
datagram[i] = b;
|
||||
i += 1;
|
||||
}
|
||||
// write partialContent to datagram
|
||||
for (byte b: partialContent) {
|
||||
datagram[i] = b;
|
||||
i += 1;
|
||||
}
|
||||
return datagram;
|
||||
}
|
||||
|
||||
@ -113,7 +121,7 @@ public class FilePart extends Payload {
|
||||
totalSize = BytesArrayTools.readLong(datagram, 16);
|
||||
}
|
||||
|
||||
/** Read filename’s size from bytes 24 to 28 of datagram.
|
||||
/** Read filename’s size from bytes 24 to 27 of datagram.
|
||||
* @param datagram received datagram
|
||||
* @throws ProtocolError
|
||||
* @throws SizeError
|
||||
@ -132,7 +140,7 @@ public class FilePart extends Payload {
|
||||
return size;
|
||||
}
|
||||
|
||||
/** Write filename from byte 24 to byte (24 + (filenameSize - 1)) of datagram.
|
||||
/** Write filename from byte 28 to byte (28 + (filenameSize - 1)) of datagram.
|
||||
* @param datagram received datagram
|
||||
* @throws ProtocolError
|
||||
* @throws SizeError
|
||||
@ -141,19 +149,19 @@ public class FilePart extends Payload {
|
||||
private void setFilename(byte[] datagram) throws ProtocolError, SizeError, InternalError {
|
||||
int filenameSize = getFilenameSize(datagram); // this can throw ProtocolError or SizeError
|
||||
try {
|
||||
filename = new String(datagram, 24, filenameSize, "UTF-8");
|
||||
filename = new String(datagram, 28, filenameSize, "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new InternalError();
|
||||
}
|
||||
}
|
||||
|
||||
/** Write partialContent from byte (24 + filenameSize) to byte (8 + payloadSize) of datagram.
|
||||
/** Write partialContent from byte (28 + filenameSize) to byte (8 + payloadSize) of datagram.
|
||||
* @param datagram received datagram
|
||||
* @throws SizeError
|
||||
* @throws ProtocolError
|
||||
*/
|
||||
private void setPartialContent(byte[] datagram) throws ProtocolError, SizeError {
|
||||
int start = 24 + getFilenameSize(datagram); // this can throw SizeError or ProtocolError
|
||||
int start = 28 + getFilenameSize(datagram); // this can throw SizeError or ProtocolError
|
||||
int end = 8 + getPayloadSize(datagram); // this can throw SizeError
|
||||
try {
|
||||
partialContent = Arrays.copyOfRange(datagram, start, end+1);
|
||||
|
Loading…
Reference in New Issue
Block a user