private void m_SendMessageEventFiring(FIRING_D_C_F firType, ISocketSndEventArgs sendArgs, string funcionTag) { switch (firType) { case FIRING_D_C_F.DEFAULT: DebugQy.LogTag(funcionTag, "buffer has send . please wait callback.", "#3487E8FF"); break; case FIRING_D_C_F.FIR_COMPLETE: DebugQy.LogTag(funcionTag, firType.ToString(), "#3487E8FF"); if (AnsyncSendMsg_Complete_Event != null) { ISocketSndEventArgs _args = sendArgs; AnsyncSendMsg_Complete_Event(this, _args); } break; case FIRING_D_C_F.FIR_FAILED: DebugQy.LogTag(funcionTag, firType.ToString() + sendArgs.ErrMessage, "#BB7979FF"); if (AnsyncSendMsg_Failed_Event != null) { ISocketSndEventArgs _args = sendArgs; AnsyncSendMsg_Failed_Event(this, _args); } break; default: break; } }
private void m_SendMessageFaliedCallBack(ISocketQy sender, ISocketSndEventArgs evetArgs) { DebugQy.LogTag("HeadBodyTcpProtocol", "Failed Call Back in 'Protocol'."); if (SendMsgFailedEvent != null) { SendMsgFailedEvent(sender, evetArgs); } }
/// <summary> /// 协议发送事件失败回调 /// </summary> /// <param name="sender">触发该事件的SocketQY</param> /// <param name="eventArgs">参数</param> private void m_ProtocolSendFailedCallback(ISocketQy sender, ISocketSndEventArgs eventArgs) { DebugQy.LogTag("ClientController", "Send Failed CallBack:" + eventArgs.ErrMessage); m_FirSomeEvent(EVENT_TYPE.SEND, COMPLETE_OR_FAILED.FAILED, eventArgs.ErrMessage); }
private void m_SendMsgCallBack(IAsyncResult asyncResult) { DebugQy.LogTag("m_SendMsgCallBack", " ---- in ---- ", "#3487E8FF"); string errorMessage = string.Empty; SocketAnsynParam ansynParam = asyncResult.AsyncState as SocketAnsynParam; ISocketSndEventArgs sndEventArgs = ansynParam.transEventArgs as ISocketSndEventArgs; FIRING_D_C_F firEventType = FIRING_D_C_F.DEFAULT; try { SocketError socketErrorCode; int sndBufferSize = ansynParam.workSocket.EndSend(asyncResult, out socketErrorCode); if (socketErrorCode != SocketError.Success) { DebugQy.LogWarning("[SEND MESAGE CALLBACK] Socket error : [" + socketErrorCode.ToString() + "]"); } if (sndBufferSize == sndEventArgs.BufferSize) { errorMessage = "√√√ no mistake √√√ SendComplete buffer lenth is :[" + sndBufferSize + "]"; firEventType = FIRING_D_C_F.FIR_COMPLETE; } else { DebugQy.LogWarning("Real 'SEND' buffer != needSize NeedSndLengrh :[" + sndEventArgs.BufferSize + "]*-*-*-*-*"); DebugQy.LogWarning("Real 'SEND' buffer != needSize RealSndLengrh :[" + sndBufferSize + "]*-*-*-*-*"); DebugQy.LogWarning("源:." + Encoding.UTF8.GetString(sndEventArgs.SendBuffer, 0, sndEventArgs.BufferSize) + "."); errorMessage = "××× receive bytes size is wrong. ××× :" + "需接收数据与接收数据字节不匹配!"; DebugQy.LogWarning(errorMessage); firEventType = FIRING_D_C_F.FIR_FAILED; //TODO:返回值校验的逻辑处理:查看Socket底层后再做补充 !!! } } catch (ArgumentNullException ee) { errorMessage = "××× ArgumentNullException ×××:" + "asyncResult 为 null。" + ee.Message; firEventType = FIRING_D_C_F.FIR_FAILED; } catch (ArgumentException ee) { errorMessage = "××× ArgumentException ×××:" + "BeginSend 方法调用后未返回 asyncResult。" + ee.Message; firEventType = FIRING_D_C_F.FIR_FAILED; } catch (SocketException ee) { errorMessage = "××× SocketException ×××:" + "试图访问套接字时发生错误。" + ee.Message; firEventType = FIRING_D_C_F.FIR_FAILED; } catch (ObjectDisposedException ee) { errorMessage = "××× ObjectDisposedException ×××:" + "Socket 已关闭。" + ee.Message; firEventType = FIRING_D_C_F.FIR_FAILED; } catch (InvalidOperationException ee) { errorMessage = "××× InvalidOperationException ×××" + "先前为异步发送已调用过 EndSend。" + ee.Message; firEventType = FIRING_D_C_F.FIR_FAILED; } catch (Exception ee) { errorMessage = "××× Unknown exception ××× :" + "Firing other unknown exception !!!!!!" + ee.Message; firEventType = FIRING_D_C_F.FIR_FAILED; } sndEventArgs.SetErrMessage(errorMessage); m_SendMessageEventFiring(firEventType, sndEventArgs, "m_SendMsgCallBack"); DebugQy.LogTag(">>>>>>> SEN MSG IN CLIENT >>>>>>>", "↑↑↑↑↑↑↑ [ out ][" + sndEventArgs.Tag + ":" + sndEventArgs.BufferSize + "]↑↑↑↑↑↑↑ ", "#3487E8FF"); }