public static byte[] encoder(Message message) { int location = 0; byte[] finalMessage = new byte[getMessageSize(message) + 4]; byte[] totalSizeMessage = BitConverter.GetBytes(getMessageSize(message)); totalSizeMessage.CopyTo(finalMessage, location); location += 4; MessageItem mSource = new MessageItem(message.Source); mSource.getItemSizeAndContent().CopyTo(finalMessage, location); location += mSource.getItemLength(); MessageItem mTarget = new MessageItem(message.Target); mTarget.getItemSizeAndContent().CopyTo(finalMessage, location); location += mTarget.getItemLength(); MessageItem mOperation = new MessageItem(message.Operation); mOperation.getItemSizeAndContent().CopyTo(finalMessage, location); location += mOperation.getItemLength(); MessageItem mStamp = new MessageItem(message.Stamp); mStamp.getItemSizeAndContent().CopyTo(finalMessage, location); location += mStamp.getItemLength(); BitConverter.GetBytes(message.ListParams.Count).CopyTo(finalMessage, location); location += 4; foreach (string param in message.ListParams) { MessageItem mParam = new MessageItem(param); mParam.getItemSizeAndContent().CopyTo(finalMessage, location); location += mParam.getItemLength(); } return finalMessage; }
public void Send(string service, string address, string operation, string stamp, List<string> param, int id) { Message msg = new Message(service, address, operation, stamp, param); mySelf.Send(id, MessageUtil.encoder(msg)); }
public bool Send(string address, string service, string operation, string stamp, List<string> param) { Message msg = new Message(address, service, operation, stamp, param); return mySelf.Send(MessageUtil.encoder(msg)); }
private static int getMessageSize(Message m) { int size = (new MessageItem(m.Source)).getItemLength() + (new MessageItem(m.Target)).getItemLength() + (new MessageItem(m.Operation)).getItemLength() + (new MessageItem(m.Stamp)).getItemLength() + 4; //4 pour le param count foreach (string param in m.ListParams) { size += (new MessageItem(param)).getItemLength(); } return size; }