namespace Devoid.Net.Server.Messages { using Devoid; using Devoid.Encoding; using System; using System.Text; public class clientMessage { public int ID; private StringBuilder mContent; public clientMessage() { this.mContent = new StringBuilder(); } public clientMessage(int messageID) { this.mContent = new StringBuilder(); this.ID = messageID; } public clientMessage(string Data) { this.mContent = new StringBuilder(); this.ID = base64Encoding.Decode(Data.Substring(0, 2)); this.mContent = new StringBuilder(Data.Substring(2)); } public clientMessage(int messageID, string sRawData) { this.mContent = new StringBuilder(); this.ID = messageID; this.mContent.Append(sRawData); } public void Append(int i) { this.Append(i.ToString()); } public void Append(string s) { this.mContent.Append(s); } public void appendInteger(int i) { this.mContent.Append(wireEncoding.Encode(i)); } public void appendString(string s) { this.appendStrInteger(s.Length); this.mContent.Append(s); } public void appendStrInteger(int i) { this.mContent.Append(base64Encoding.Encode(i)); } public byte[] GetBytes() { StringBuilder builder = new StringBuilder(); builder.Append('@'); builder.Append(base64Encoding.Encode(this.mContent.Length + 2)); builder.Append(base64Encoding.Encode(this.ID)); builder.Append(this.mContent.ToString()); return Engine.Latin1Encoder.GetBytes(builder.ToString()); } public string GetContent() { return this.mContent.ToString(); } public string getString(int ID) { return base64Encoding.getStructuredParameter(this.mContent.ToString(), ID); } public void Initialize(int messageID) { this.ID = messageID; } public bool popBoolean() { char ch = this.mContent[0]; this.mContent.Remove(0, 1); return (ch == 'I'); } public int popInteger() { int i = wireEncoding.Decode(this.mContent.ToString()); this.mContent.Remove(0, wireEncoding.Encode(i).Length); return i; } public bool popStrBoolean() { char ch = this.mContent[0]; this.mContent.Remove(0, 1); return (ch == 'A'); } public string popString() { int length = base64Encoding.Decode(this.mContent.ToString().Substring(0, 2)); string str = this.mContent.ToString().Substring(2, length); this.mContent.Remove(0, length + 2); return str; } public int popStrInteger() { int num = base64Encoding.Decode(this.mContent.ToString().Substring(0, 2)); this.mContent.Remove(0, 2); return num; } public string encodedID { get { return base64Encoding.Encode(this.ID); } } public string MethodName { get { return clientMessageTargetMethodNames.getMessageTargetMethodName(this.ID); } } } }