Opc.Ua.Bindings.TcpServerChannel.SendOpenSecureChannelResponse C# (CSharp) Method

SendOpenSecureChannelResponse() private method

Sends an OpenSecureChannel response.
private SendOpenSecureChannelResponse ( uint requestId, TcpChannelToken token, OpenSecureChannelRequest request ) : void
requestId uint
token TcpChannelToken
request OpenSecureChannelRequest
return void
        private void SendOpenSecureChannelResponse(uint requestId, TcpChannelToken token, OpenSecureChannelRequest request)
        {
            // Utils.Trace("Channel {0}: SendOpenSecureChannelResponse()", ChannelId);

            OpenSecureChannelResponse response = new OpenSecureChannelResponse();
            
            response.ResponseHeader.RequestHandle = request.RequestHeader.RequestHandle;
            response.ResponseHeader.Timestamp     = DateTime.UtcNow;

            response.SecurityToken.ChannelId = token.ChannelId;
            response.SecurityToken.TokenId = token.TokenId;
            response.SecurityToken.CreatedAt = token.CreatedAt;
            response.SecurityToken.RevisedLifetime = (uint)token.Lifetime;
            response.ServerNonce = token.ServerNonce;
            
            byte[] buffer = BinaryEncoder.EncodeMessage(response, Quotas.MessageContext); 
            
            BufferCollection chunksToSend = WriteAsymmetricMessage(
                TcpMessageType.Open,
                requestId,
                //ServerCertificateChain,
                ServerCertificate,
                ClientCertificate,
                new ArraySegment<byte>(buffer, 0, buffer.Length));

            // write the message to the server.
            try
            {
                BeginWriteMessage(chunksToSend, Int32.MaxValue, null);
                chunksToSend = null;
            }
            finally
            {
                if (chunksToSend != null)
                {
                    chunksToSend.Release(BufferManager, "SendOpenSecureChannelResponse");
                }
            }
        }