/// <summary> /// 写入字节流 /// </summary> /// <param name="aValue"></param> /// <param name="response"></param> protected static void WriteUShort(BaseGameResponse response, UInt16 aValue) { byte[] outputStream = BitConverter.GetBytes(aValue); response.Write(outputStream); }
/// <summary> /// /// </summary> /// <param name="response"></param> public override void WriteResponse(BaseGameResponse response) { byte[] buffer = BuildResponsePack(); response.BinaryWrite(buffer); }
/// <summary> /// /// </summary> /// <param name="response"></param> /// <param name="aValue"></param> protected static void WriteLong(BaseGameResponse response, Int64 aValue) { byte[] outputStream = BitConverter.GetBytes(aValue); response.Write(outputStream); }
/// <summary> /// /// </summary> /// <param name="response"></param> /// <param name="aValue"></param> protected static void WriteBool(BaseGameResponse response, Boolean aValue) { byte[] outputStream = BitConverter.GetBytes(aValue); response.Write(outputStream); }
/// <summary> /// 计算Action协议占用的字节长度 /// </summary> protected void WriteActionNum(BaseGameResponse response) { int iActionNum = GetContentLen(); WriteInt(response, iActionNum); }
/// <summary> /// /// </summary> /// <param name="response"></param> /// <param name="aAction"></param> /// <param name="errorCode"></param> /// <param name="errorInfo"></param> /// <param name="msgId">消息初始ID</param> /// <param name="st"></param> public void WriteAction(BaseGameResponse response, int aAction, int errorCode, string errorInfo, int msgId, string st = "st") { WriteHead(response, aAction, errorCode, errorInfo, msgId, st); }
/// <summary> /// 内部输出Action的值 /// </summary> /// <returns>无</returns> protected void InternalWriteAction(BaseGameResponse response) { foreach (object obj in arrayList) { Type type = obj.GetType(); if (type == typeof(String)) { WriteString(response, Convert.ToString(obj)); } else if (type == typeof(double)) { WriteDouble(response, Convert.ToDouble(obj)); } else if (type == typeof(float)) { WriteFloat(response, Convert.ToSingle(obj)); } else if (type == typeof(Int64)) { WriteLong(response, Convert.ToInt64(obj)); } else if (type == typeof(Int32) || type.IsEnum) { WriteInt(response, Convert.ToInt32(obj)); } else if (type == typeof(Int16)) { WriteShort(response, Convert.ToInt16(obj)); } else if (type == typeof(UInt64)) { WriteULong(response, Convert.ToUInt64(obj)); } else if (type == typeof(UInt32)) { WriteUInt(response, Convert.ToUInt32(obj)); } else if (type == typeof(UInt16)) { WriteUShort(response, Convert.ToUInt16(obj)); } else if (type == typeof(Byte)) { WriteByte(response, Convert.ToByte(obj)); } else if (type == typeof(bool)) { WriteBool(response, Convert.ToBoolean(obj)); } else if (type == typeof(DateTime)) { WriteDateTime(response, Convert.ToDateTime(obj)); } else if (type == typeof(DataStruct)) { DataStruct ds = ((DataStruct)obj); ds.WriteActionNum(response); ds.InternalWriteAction(response); } else if (type == typeof(byte[])) { //By Seamoon已序列化好的内容,直接写入 var bytes = (byte[])(obj); WriteInt(response, bytes.Length); response.Write(bytes); } } }