zoukankan      html  css  js  c++  java
  • WC框架

    ChannelDispatcher 字段

    public class ChannelDispatcher : ChannelDispatcherBase
    {
        // Fields
        private ThreadSafeMessageFilterTable<EndpointAddress> addressTable;
        private string bindingName;
        private SynchronizedCollection<IChannelInitializer> channelInitializers;//通道初始化器
        private CommunicationObjectManager<IChannel> channels;//通道管理器
        private EndpointDispatcherCollection endpointDispatchers;
        private ErrorBehavior errorBehavior;
        private Collection<IErrorHandler> errorHandlers;//错误处理器
        private EndpointDispatcherTable filterTable;
        private ServiceHostBase host;
        private bool includeExceptionDetailInFaults;
        private bool isTransactedReceive;
        private readonly IChannelListener listener;
        private ListenerHandler listenerHandler;//
        private int maxPendingReceives;
        private int maxTransactedBatchSize;
        private MessageVersion messageVersion;
        private SynchronizedChannelCollection<IChannel> pendingChannels;
        private bool performDefaultCloseInput;
        private bool receiveContextEnabled;
        private bool receiveSynchronously;
        private bool sendAsynchronously;
        private ServiceThrottle serviceThrottle;
        private bool session;
        private SharedRuntimeState shared;
        private IDefaultCommunicationTimeouts timeouts;
        private IsolationLevel transactionIsolationLevel;
        private bool transactionIsolationLevelSet;
        private TimeSpan transactionTimeout;

    }

    ChannelHandle:

    private void HandleReceiveComplete(RequestContext context)
    {
        if ((context == null) && this.incrementedActivityCountInConstructor)
        {
            this.listener.ChannelDispatcher.Channels.DecrementActivityCount();
        }
        if (this.channel != null)
        {
            this.channel.HandleReceiveComplete(context);
        }
        else if ((context == null) && this.hasSession)
        {
            bool flag;
            lock (this.ThisLock)
            {
                flag = !this.doneReceiving;
                this.doneReceiving = true;
            }
            if (flag)
            {
                this.receiver.Close();
                if (this.idleManager != null)
                {
                    this.idleManager.CancelTimer();
                }
                ServiceThrottle throttle = this.throttle;
                if (throttle != null)
                {
                    throttle.DeactivateChannel();
                }
            }
        }
    }

  • 相关阅读:
    Git 码云操作
    多线程基础必要知识点!看了学习多线程事半功倍(转)
    Spring技术内幕:设计理念和整体架构概述(转)
    单例模式你会几种写法?(转)
    Linux-看完这篇Linux基本的操作就会了(转)
    每天一个linux命令9之crontab 定时任务
    在linux下给grep命令添加颜色
    springmvc使用StringHttpMessageConverter需要配置编码
    MySQL 中的 base64 函数
    spirng整合rmi
  • 原文地址:https://www.cnblogs.com/qianyz/p/2690372.html
Copyright © 2011-2022 走看看