private void Send(int reqId, int resId, byte[] content, Action <int, ProtoPacket> callback) { //todo check network if (resId != 0) { //previous req is override, notify error if (mIdToOnceHandler.TryGetValue(resId, out var delegateObj)) { var error = ProtoPacket.CreateError(resId, (int)ErrorCode.req_override, string.Empty); if (delegateObj != null) { delegateObj.DynamicInvoke(resId, error); } mIdToOnceHandler.Remove(resId); } if (callback != null) { AddToHandler(resId, callback, mIdToOnceHandler); } var reqRecord = new ReqRecord(); reqRecord.reqId = reqId; reqRecord.resId = resId; reqRecord.reqTime = Time.realtimeSinceStartup; mIdToRecord.Add(resId, reqRecord); } mChannel.Send(SendBuf.From(DCGameProtocol.GetIntBuf(reqId)), SendBuf.From(content)); }
public void OnSend() { var req = new PTestDemoClsReq(); var reqId = DCGameProtocol.GetId(req); var content = req.ToByteArray(); mChannel.Send(SendBuf.From(DCGameProtocol.GetIntBuf(reqId)), SendBuf.From(content)); // mChannel.Send(Encoding.UTF8.GetBytes(mSendStr)); }
internal bool PostSend() { bool haveDataSend = false; IAsyncResult ar = null; SocketError socketError = SocketError.SocketError; HandlerParam handlerParam = null; try { if (SUCCESS(IsClosed)) { goto Exit1; } if (SUCCESS(IsSending)) { goto Exit1; } if (SendBuf.GetOnceReadableLen() > 0) { IsSending = true; haveDataSend = true; handlerParam = new HandlerParam(EHandlerType.Socker, this); if (LOG_ERROR(handlerParam != null)) { goto Exit0; } ar = Sock.BeginSend(SendBuf.BufBytes, SendBuf.ReadInx, SendBuf.GetOnceReadableLen(), SocketFlags.None, out socketError, LP.NetModule.Reactor.OnSend, handlerParam); if (socketError != SocketError.Success) { Close(ESockerCloseType.PostSendFail, 1, true); goto Exit0; } if (LOG_ERROR(ar != null)) { goto Exit0; } } } catch (Exception e) { LPMiniDump.GenerateNormalDump(e); } Exit1: Exit0: return(haveDataSend); }
public bool Send(string msg) { bool result = false; bool overflow = false; byte[] msgBytes = null; //检测是否sock是否连接中 if (SUCCESS(IsClosed)) { goto Exit1; } msgBytes = Encoding.UTF8.GetBytes(msg.ToCharArray()); if (LOG_ERROR(msgBytes != null)) { goto Exit0; } if (SendBuf.GetTotalWritableLen() < msgBytes.Length) { overflow = true; } else { result = SendBuf.Write(msgBytes, 0, msgBytes.Length); if (LOG_ERROR(result)) { goto Exit0; } } if (overflow) { Close(ESockerCloseType.SendBufOverflow, 1, false); if (LOG_ERROR(false)) { goto Exit0; } } Exit1: return(true); Exit0: return(false); }
public bool Send(byte[] data, int startIndex, int length) { bool result = false; bool overflow = false; //检测是否sock是否连接中 if (SUCCESS(IsClosed)) { goto Exit1; } if (SendBuf.GetTotalWritableLen() < length) { overflow = true; } else { result = SendBuf.Write(data, startIndex, length); if (LOG_ERROR(result)) { goto Exit0; } } if (overflow) { Close(ESockerCloseType.SendBufOverflow, 1, false); if (LOG_ERROR(false)) { goto Exit0; } } Exit1: return(true); Exit0: return(false); }