internal override void SendMessage(byte *message, int size) { TrinityErrorCode err = TrinityErrorCode.E_SUCCESS; for (int i = 0; i < retry; i++) { SynClient sc = GetClient(); err = sc.SendMessage(message, size); PutBackClient(sc); if (err == TrinityErrorCode.E_SUCCESS || err == TrinityErrorCode.E_RPC_EXCEPTION) { break; } } _error_check(err); }
/// <summary> /// Get a SynClient and apply the function. Intended for SendMessage calls. /// Will retry if the function returns neither E_SUCCESS nor E_RPC_EXCEPTION. /// </summary> private void _use_synclient(Func <SynClient, TrinityErrorCode> func) { TrinityErrorCode err = TrinityErrorCode.E_SUCCESS; for (int i = 0; i < m_send_retry; i++) { SynClient sc = GetClient(); err = func(sc); PutBackClient(sc); _error_check(err); if (err == TrinityErrorCode.E_SUCCESS) { break; } } }
internal override void SendMessage(TrinityMessage msg, out TrinityResponse response) { response = null; TrinityErrorCode err = TrinityErrorCode.E_SUCCESS; for (int i = 0; i < retry; i++) { SynClient sc = GetClient(); err = sc.SendMessage(msg.Buffer, msg.Size, out response); PutBackClient(sc); if (err == TrinityErrorCode.E_SUCCESS || err == TrinityErrorCode.E_RPC_EXCEPTION) { break; } } _error_check(err); }