protected NetObjectRPCEvent(NetObject destObject, RPCGuaranteeType gType, NetObjectRPCDirection dir) : base(gType, RPCDirection.RPCDirAny) { DestObject = destObject; RpcDirection = dir; }
protected RPCEvent(RPCGuaranteeType gType, RPCDirection dir) : base((GuaranteeType)gType, (EventDirection)dir) { }
public void SendPacket(Packet p, RPCGuaranteeType type) { var opcode = (UInt32) p.Opcode; Logger.WriteLog("Outgoing Packet: {0}", LogType.Network, p.Opcode); var arr = p.ToArray(); using (var sw = new StreamWriter("sent.txt", true, Encoding.UTF8)) { sw.WriteLine(BitConverter.ToString(arr)); sw.WriteLine(); } var arrLength = (UInt32) arr.Length; if (arrLength > 1400U) { ++_fragmentCounter; var doneSize = 0U; var count = (UInt16) Math.Ceiling(arrLength / 220.0); for (UInt16 i = 0; i < count; ++i) { var buffSize = 220U; if (buffSize >= arrLength - doneSize) buffSize = arrLength - doneSize; var tempBuff = new Byte[buffSize]; Array.Copy(arr, i * 220, tempBuff, 0, buffSize); var stream = new ByteBuffer(tempBuff, buffSize); doneSize += buffSize; switch (type) { case RPCGuaranteeType.RPCGuaranteed: rpcMsgGuaranteedFragmented(opcode, _fragmentCounter, i, count, stream); break; case RPCGuaranteeType.RPCGuaranteedOrdered: rpcMsgGuaranteedOrderedFragmented(opcode, _fragmentCounter, i, count, stream); break; case RPCGuaranteeType.RPCUnguaranteed: rpcMsgNonGuaranteedFragmented(opcode, _fragmentCounter, i, count, stream); break; } } } else { var stream = new ByteBuffer(arr, arrLength); switch (type) { case RPCGuaranteeType.RPCGuaranteed: rpcMsgGuaranteed(opcode, stream); break; case RPCGuaranteeType.RPCGuaranteedOrdered: rpcMsgGuaranteedOrdered(opcode, stream); break; case RPCGuaranteeType.RPCUnguaranteed: rpcMsgNonGuaranteed(opcode, stream); break; } } }