Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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;
                }
            }
        }
Esempio n. 3
0
        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);
        }