当前位置: 首页>>代码示例>>C#>>正文


C# IServiceRequest.GetType方法代码示例

本文整理汇总了C#中IServiceRequest.GetType方法的典型用法代码示例。如果您正苦于以下问题:C# IServiceRequest.GetType方法的具体用法?C# IServiceRequest.GetType怎么用?C# IServiceRequest.GetType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IServiceRequest的用法示例。


在下文中一共展示了IServiceRequest.GetType方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: BeginSendRequest

        /// <summary>
        /// Begins an asynchronous operation to send a request over the secure channel.
        /// </summary>
        public IAsyncResult BeginSendRequest(IServiceRequest request, AsyncCallback callback, object callbackData)
        {
            #if !SILVERLIGHT
            if (!m_servicePointInitialized)
            {
                ServicePoint sp = System.Net.ServicePointManager.FindServicePoint(m_url);
                sp.ConnectionLimit = 1000;
                m_servicePointInitialized = true;
            }
            #endif

            HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(m_url.ToString());
            webRequest.Method = "POST";

            if (m_settings.Configuration.UseBinaryEncoding)
            {
                webRequest.ContentType = "application/octet-stream";
            }
            else
            {
                StringBuilder contentType = new StringBuilder();
                contentType.Append("application/soap+xml; charset=\"utf-8\"; action=\"");
                contentType.Append(Namespaces.OpcUaWsdl);
                contentType.Append("/");

                string typeName = request.GetType().Name;
                int index = typeName.LastIndexOf("Request");
                contentType.Append(typeName.Substring(0, index)); ;
                contentType.Append("\"");

                webRequest.ContentType = contentType.ToString();
                
                #if !SILVERLIGHT
                webRequest.Headers.Add("OPCUA-SecurityPolicy", this.m_settings.Description.SecurityPolicyUri);
                #endif
            }

            AsyncResult result = new AsyncResult(callback, callbackData, m_operationTimeout, request, webRequest);
            webRequest.BeginGetRequestStream(OnGetRequestStreamComplete, result);
            return result;
        }
开发者ID:OPCFoundation,项目名称:Misc-Tools,代码行数:44,代码来源:HttpsTransportChannel.cs

示例2: SendRequestAsync

        private async Task SendRequestAsync(IServiceRequest request, CancellationToken token = default(CancellationToken))
        {
            await this.sendingSemaphore.WaitAsync(token).ConfigureAwait(false);
            try
            {
                this.ThrowIfClosedOrNotOpening();
                Log.Trace($"Sending {request.GetType().Name} Handle: {request.RequestHeader.RequestHandle}");
                if (request is OpenSecureChannelRequest)
                {
                    await this.SendOpenSecureChannelRequestAsync((OpenSecureChannelRequest)request, token).ConfigureAwait(false);
                }
                else if (request is CloseSecureChannelRequest)
                {
                    await this.SendCloseSecureChannelRequestAsync((CloseSecureChannelRequest)request, token).ConfigureAwait(false);

                    // in this case, the endpoint does not actually send a response
                    TaskCompletionSource<IServiceResponse> tcs;
                    if (this.pendingCompletions.TryRemove(request.RequestHeader.RequestHandle, out tcs))
                    {
                        tcs.TrySetResult(new CloseSecureChannelResponse());
                    }
                }
                else
                {
                    await this.SendServiceRequestAsync(request, token).ConfigureAwait(false);
                }
            }
            catch (Exception ex)
            {
                Log.Warn($"Error sending {request.GetType().Name} Handle: {request.RequestHeader.RequestHandle}. {ex.Message}");
                throw;
            }
            finally
            {
                this.sendingSemaphore.Release();
            }
        }
开发者ID:yuriik83,项目名称:workstation-uaclient,代码行数:37,代码来源:UaTcpSecureChannel.cs

示例3: BeginSendRequest

        /// <summary>
        /// Begins an asynchronous operation to send a request over the secure channel.
        /// </summary>
        public IAsyncResult BeginSendRequest(IServiceRequest request, AsyncCallback callback, object callbackData)
        {
            HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(m_url.ToString());
            webRequest.Method = "POST";

            if (m_settings.Configuration.UseBinaryEncoding)
            {
                webRequest.ContentType = "application/octet-stream";
            }
            else
            {
                StringBuilder contentType = new StringBuilder();
                contentType.Append("application/soap+xml; charset=\"utf-8\"; action=\"");
                contentType.Append(Namespaces.OpcUaWsdl);
                contentType.Append("/");

                string typeName = request.GetType().Name;
                int index = typeName.LastIndexOf("Request");
                contentType.Append(typeName.Substring(0, index)); ;
                contentType.Append("\"");

                webRequest.ContentType = contentType.ToString();
            }

            AsyncResult result = new AsyncResult(callback, callbackData, m_operationTimeout, request, webRequest);
            webRequest.BeginGetRequestStream(OnGetRequestStreamComplete, result);
            return result;
        }
开发者ID:yuriik83,项目名称:UA-.UWP-Universal-Windows-Platform,代码行数:31,代码来源:HttpsTransportChannel.cs

示例4: SendServiceRequestAsync

        private async Task SendServiceRequestAsync(IServiceRequest request, CancellationToken token)
        {
            var bodyStream = SerializableBytes.CreateWritableStream();
            var bodyEncoder = new BinaryEncoder(bodyStream, this);
            try
            {
                ExpandedNodeId binaryEncodingId;
                if (!TypeToBinaryEncodingIdDictionary.TryGetValue(request.GetType(), out binaryEncodingId))
                {
                    throw new ServiceResultException(StatusCodes.BadDataTypeIdUnknown);
                }

                bodyEncoder.WriteNodeId(null, ExpandedNodeId.ToNodeId(binaryEncodingId, this.NamespaceUris));
                request.Encode(bodyEncoder);
                bodyStream.Position = 0;
                if (bodyStream.Length > this.RemoteMaxMessageSize)
                {
                    throw new ServiceResultException(StatusCodes.BadEncodingLimitsExceeded);
                }

                // write chunks
                int chunkCount = 0;
                int bodyCount = (int)(bodyStream.Length - bodyStream.Position);
                while (bodyCount > 0)
                {
                    chunkCount++;
                    if (this.RemoteMaxChunkCount > 0 && chunkCount > this.RemoteMaxChunkCount)
                    {
                        throw new ServiceResultException(StatusCodes.BadEncodingLimitsExceeded);
                    }

                    var stream = new MemoryStream(this.sendBuffer, 0, (int)this.RemoteReceiveBufferSize, true, true);
                    var encoder = new BinaryEncoder(stream, this);
                    try
                    {
                        // header
                        encoder.WriteUInt32(null, UaTcpMessageTypes.MSGF);
                        encoder.WriteUInt32(null, 0u);
                        encoder.WriteUInt32(null, this.ChannelId);

                        // symmetric security header
                        encoder.WriteUInt32(null, this.TokenId);

                        // detect new TokenId
                        if (this.TokenId != this.currentClientTokenId)
                        {
                            this.currentClientTokenId = this.TokenId;

                            // update signer and encrypter with new symmetric keys
                            if (this.symIsSigned)
                            {
                                this.symSigner.Key = this.clientSigningKey;
                                if (this.symIsEncrypted)
                                {
                                    this.currentClientEncryptingKey = this.clientEncryptingKey;
                                    this.currentClientInitializationVector = this.clientInitializationVector;
                                    this.symEncryptor = this.symEncryptionAlgorithm.CreateEncryptor(this.currentClientEncryptingKey, this.currentClientInitializationVector);
                                }
                            }
                        }

                        int plainHeaderSize = encoder.Position;

                        // sequence header
                        encoder.WriteUInt32(null, this.GetNextSequenceNumber());
                        encoder.WriteUInt32(null, request.RequestHeader.RequestHandle);

                        // body
                        int paddingHeaderSize;
                        int maxBodySize;
                        int bodySize;
                        int paddingSize;
                        int chunkSize;
                        if (this.symIsEncrypted)
                        {
                            paddingHeaderSize = this.symEncryptionBlockSize > 256 ? 2 : 1;
                            maxBodySize = ((((int)this.RemoteReceiveBufferSize - plainHeaderSize - this.symSignatureSize - paddingHeaderSize) / this.symEncryptionBlockSize) * this.symEncryptionBlockSize) - SequenceHeaderSize;
                            if (bodyCount < maxBodySize)
                            {
                                bodySize = bodyCount;
                                paddingSize = (this.symEncryptionBlockSize - ((SequenceHeaderSize + bodySize + paddingHeaderSize + this.symSignatureSize) % this.symEncryptionBlockSize)) % this.symEncryptionBlockSize;
                            }
                            else
                            {
                                bodySize = maxBodySize;
                                paddingSize = 0;
                            }

                            chunkSize = plainHeaderSize + (((SequenceHeaderSize + bodySize + paddingSize + paddingHeaderSize + this.symSignatureSize) / this.symEncryptionBlockSize) * this.symEncryptionBlockSize);
                        }
                        else
                        {
                            paddingHeaderSize = 0;
                            paddingSize = 0;
                            maxBodySize = (int)this.RemoteReceiveBufferSize - plainHeaderSize - this.symSignatureSize - SequenceHeaderSize;
                            if (bodyCount < maxBodySize)
                            {
                                bodySize = bodyCount;
                            }
                            else
//.........这里部分代码省略.........
开发者ID:yuriik83,项目名称:workstation-uaclient,代码行数:101,代码来源:UaTcpSecureChannel.cs


注:本文中的IServiceRequest.GetType方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。