import
java.util.ArrayList;
import
java.util.List;
import
java.util.UUID;
public
class
GFG {
public
static
void
main(String[] args)
{
String message =
"The world is beautiful and so are we."
;
int
chunkSize =
10
;
List<MessageChunk> messageChunkList = generateChunks(message.getBytes(), chunkSize);
for
(MessageChunk chunk : messageChunkList) {
System.out.println(
"Chunk-"
+ (chunk.getIndex() +
1
) +
":"
+ chunk.toString());
}
}
public
static
List<MessageChunk> generateChunks(
byte
[] payload,
int
chunkSize)
{
UUID uuid = UUID.randomUUID();
long
ts = System.currentTimeMillis();
final
int
payloadSize = payload.length;
System.out.println(
"Payload size:"
+ payload.length +
" bytes"
);
final
int
chunkCount = (payloadSize / chunkSize) + (
0
== (payloadSize % chunkSize) ?
0
:
1
);
System.out.println(
"Chunk Count: "
+ chunkCount);
int
start =
0
;
int
index =
0
;
int
i =
0
;
List<MessageChunk> subArray =
new
ArrayList<>();
while
(start < payloadSize) {
++i;
final
int
end = (start + chunkSize) < payloadSize ? start + chunkSize : payloadSize;
final
int
size = end - start;
final
byte
[] chunk =
new
byte
[size];
System.arraycopy(payload, start, chunk,
0
, size);
MessageChunk msc =
new
MessageChunk(uuid.toString(), ts, chunkCount, index, chunk);
subArray.add(msc);
System.out.println(
"The value of "
+ i +
"th message chunk size: "
+ msc.getBytes().length);
index++;
start = end;
}
return
subArray;
}
static
class
MessageChunk {
private
String msgName;
private
long
timestamp;
private
int
totalPart;
private
int
index;
private
byte
[] bytes;
public
MessageChunk(String msgName,
long
timestamp,
int
totalPart,
int
index,
byte
[] bytes)
{
this
.msgName = msgName;
this
.timestamp = timestamp;
this
.totalPart = totalPart;
this
.index = index;
this
.bytes = bytes;
}
public
String getMessage()
{
return
msgName;
}
public
long
getTimestamp()
{
return
timestamp;
}
public
int
getTotalPart()
{
return
totalPart;
}
public
int
getIndex()
{
return
index;
}
public
byte
[] getBytes()
{
return
bytes;
}
@Override
public
String toString()
{
return
"MessageChunk{"
+
"msgName='"
+ msgName + '
''
+
", timestamp="
+ timestamp +
", totalPart="
+ totalPart +
", index="
+ index +
", bytes="
+
new
String(bytes) +
'}'
;
}
}
}