-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNetworkMessage.cs
39 lines (34 loc) · 1.39 KB
/
NetworkMessage.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Text;
namespace Networking
{
public class NetworkMessage
{
public const int HeaderSize = 4;
public NetworkMessage(string messageData)
{
MessageData = messageData;
MessageDataSize = Encoding.UTF8.GetByteCount(messageData);
}
public NetworkMessage(string messageData, int messageDataSize)
{
MessageData = messageData;
MessageDataSize = Encoding.UTF8.GetByteCount(messageData);
if (messageDataSize != MessageDataSize)
throw new ArgumentException(
String.Format("Incorrect message data size specified: {0}. Actual message size is: {1}",
messageDataSize, MessageDataSize), "messageDataSize");
}
public int MessageDataSize { get; private set; }
public string MessageData { get; private set; }
public byte[] GetBytesForTransfer()
{
byte[] resultBytes = new byte[sizeof(int) + MessageDataSize];
byte[] msgSize = BitConverter.GetBytes(MessageDataSize);
byte[] msgData = Encoding.UTF8.GetBytes(MessageData);
Array.Copy(msgSize, 0, resultBytes, 0, msgSize.Length);
Array.Copy(msgData, 0, resultBytes, msgSize.Length, msgData.Length);
return resultBytes;
}
}
}