Opc.Ua.Bindings.TcpClientChannel.SendRequest C# (CSharp) Method

SendRequest() private method

Sends a request to the server.
private SendRequest ( WriteOperation operation, int timeout, IServiceRequest request ) : void
operation WriteOperation
timeout int
request IServiceRequest
return void
        private void SendRequest(WriteOperation operation, int timeout, IServiceRequest request)
        {
            bool success = false;
            BufferCollection buffers = null;

            try
            {
                // check for valid token.
                TcpChannelToken token = CurrentToken;

                if (token == null)
                {
                    throw new ServiceResultException(StatusCodes.BadSecureChannelClosed);
                }
                
                // must return an error to the client if limits are exceeded.
                bool limitsExceeded = false;

                buffers = WriteSymmetricMessage(
                    TcpMessageType.Message,
                    operation.RequestId,
                    token,
                    request,
                    true,
                    out limitsExceeded);

                BeginWriteMessage(buffers, operation);
                buffers = null;
                success = true;

                if (limitsExceeded)
                {
                    throw new ServiceResultException(StatusCodes.BadRequestTooLarge);
                }
            }
            catch (Exception e)
            {
                operation.Fault(e, StatusCodes.BadRequestInterrupted, "Could not send request to server.");
            }
            finally
            {
                if (buffers != null)
                {
                    buffers.Release(BufferManager, "SendRequest");
                }

                if (!success)
                {
                    OperationCompleted(operation);
                }
            }
        }
        #endregion