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

SendCloseSecureChannelRequest() private method

Sends an CloseSecureChannel request message.
private SendCloseSecureChannelRequest ( WriteOperation operation ) : void
operation WriteOperation
return void
        private void SendCloseSecureChannelRequest(WriteOperation operation)
        {
            Utils.Trace("Channel {0}: SendCloseSecureChannelRequest()", ChannelId);

            // supress reconnects if an error occurs.
            m_waitBetweenReconnects = Timeout.Infinite;

            // check for valid token.
            TcpChannelToken currentToken = CurrentToken;

            if (currentToken == null)
            {
                throw new ServiceResultException(StatusCodes.BadSecureChannelClosed);
            }

            CloseSecureChannelRequest request = new CloseSecureChannelRequest();
            request.RequestHeader.Timestamp = DateTime.UtcNow;
            
            // limits should never be exceeded sending a close message.
            bool limitsExceeded = false;

            // construct the message.
            BufferCollection buffers = WriteSymmetricMessage(
                TcpMessageType.Close,
                operation.RequestId,
                currentToken,
                request,
                true,
                out limitsExceeded);
            
            // send the message.
            try
            {
                BeginWriteMessage(buffers, operation);
                buffers = null;
            }
            finally
            {
                if (buffers != null)
                {
                    buffers.Release(BufferManager, "SendCloseSecureChannelRequest");
                }
            }
        }