コード例 #1
0
        public static IServerReliableChannelBinder CreateBinder(ChannelBuilder builder,
                                                                EndpointAddress remoteAddress, MessageFilter filter, int priority,
                                                                TolerateFaultsMode faultMode, TimeSpan defaultCloseTimeout,
                                                                TimeSpan defaultSendTimeout)
        {
            Type type = typeof(TChannel);

            if (type == typeof(IDuplexChannel))
            {
                return(new DuplexServerReliableChannelBinder(builder, remoteAddress, filter,
                                                             priority, MaskingMode.None, defaultCloseTimeout, defaultSendTimeout));
            }
            else if (type == typeof(IDuplexSessionChannel))
            {
                return(new DuplexSessionServerReliableChannelBinder(builder, remoteAddress, filter,
                                                                    priority, MaskingMode.None, faultMode, defaultCloseTimeout,
                                                                    defaultSendTimeout));
            }
            else if (type == typeof(IReplyChannel))
            {
                return(new ReplyServerReliableChannelBinder(builder, remoteAddress, filter,
                                                            priority, MaskingMode.None, defaultCloseTimeout, defaultSendTimeout));
            }
            else if (type == typeof(IReplySessionChannel))
            {
                return(new ReplySessionServerReliableChannelBinder(builder, remoteAddress, filter,
                                                                   priority, MaskingMode.None, faultMode, defaultCloseTimeout,
                                                                   defaultSendTimeout));
            }
            else
            {
                throw Fx.AssertAndThrow("ServerReliableChannelBinder supports creation of IDuplexChannel, IDuplexSessionChannel, IReplyChannel, and IReplySessionChannel only.");
            }
        }
コード例 #2
0
 public ReplyServerReliableChannelBinder(TReplyChannel channel,
                                         EndpointAddress cachedLocalAddress, EndpointAddress remoteAddress,
                                         MaskingMode maskingMode, TolerateFaultsMode faultMode,
                                         TimeSpan defaultCloseTimeout, TimeSpan defaultSendTimeout)
     : base(channel, cachedLocalAddress, remoteAddress, maskingMode, faultMode,
            defaultCloseTimeout, defaultSendTimeout)
 {
 }
コード例 #3
0
 public ReplyServerReliableChannelBinder(ChannelBuilder builder,
                                         EndpointAddress remoteAddress, MessageFilter filter, int priority,
                                         MaskingMode maskingMode, TolerateFaultsMode faultMode,
                                         TimeSpan defaultCloseTimeout, TimeSpan defaultSendTimeout)
     : base(builder, remoteAddress, filter, priority, maskingMode, faultMode,
            defaultCloseTimeout, defaultSendTimeout)
 {
 }
コード例 #4
0
 protected ServerReliableChannelBinder(TChannel channel, EndpointAddress cachedLocalAddress,
                                       EndpointAddress remoteAddress, MaskingMode maskingMode,
                                       TolerateFaultsMode faultMode, TimeSpan defaultCloseTimeout,
                                       TimeSpan defaultSendTimeout)
     : base(channel, maskingMode, faultMode, defaultCloseTimeout, defaultSendTimeout)
 {
     this.cachedLocalAddress = cachedLocalAddress;
     this.remoteAddress      = remoteAddress;
 }
コード例 #5
0
 protected ServerReliableChannelBinder(ChannelBuilder builder,
                                       EndpointAddress remoteAddress, MessageFilter filter, int priority, MaskingMode maskingMode,
                                       TolerateFaultsMode faultMode, TimeSpan defaultCloseTimeout,
                                       TimeSpan defaultSendTimeout)
     : base(null, maskingMode, faultMode, defaultCloseTimeout, defaultSendTimeout)
 {
     this.listener      = builder.BuildChannelListener <TChannel>(filter, priority);
     this.remoteAddress = remoteAddress;
 }
コード例 #6
0
 protected ClientReliableChannelBinder(EndpointAddress to, Uri via, IChannelFactory <TChannel> factory,
                                       MaskingMode maskingMode, TolerateFaultsMode faultMode, ChannelParameterCollection channelParameters,
                                       TimeSpan defaultCloseTimeout, TimeSpan defaultSendTimeout)
     : base(factory.CreateChannel(to, via), maskingMode, faultMode,
            defaultCloseTimeout, defaultSendTimeout)
 {
     _to                = to;
     Via                = via;
     _factory           = factory;
     _channelParameters = channelParameters ?? throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(channelParameters));
 }
コード例 #7
0
        public static IServerReliableChannelBinder CreateBinder(TChannel channel,
                                                                EndpointAddress cachedLocalAddress, EndpointAddress remoteAddress,
                                                                TolerateFaultsMode faultMode, TimeSpan defaultCloseTimeout,
                                                                TimeSpan defaultSendTimeout)
        {
            Type type = typeof(TChannel);

            if (type == typeof(IDuplexChannel))
            {
                return(new DuplexServerReliableChannelBinder((IDuplexChannel)channel,
                                                             cachedLocalAddress, remoteAddress, MaskingMode.All, defaultCloseTimeout,
                                                             defaultSendTimeout));
            }
            else if (type == typeof(IDuplexSessionChannel))
            {
                return(new DuplexSessionServerReliableChannelBinder((IDuplexSessionChannel)channel,
                                                                    cachedLocalAddress, remoteAddress, MaskingMode.All, faultMode,
                                                                    defaultCloseTimeout, defaultSendTimeout));
            }
            else if (type == typeof(IReplyChannel))
            {
                return(new ReplyServerReliableChannelBinder((IReplyChannel)channel,
                                                            cachedLocalAddress, remoteAddress, MaskingMode.All, defaultCloseTimeout,
                                                            defaultSendTimeout));
            }
            else if (type == typeof(IReplySessionChannel))
            {
                return(new ReplySessionServerReliableChannelBinder((IReplySessionChannel)channel,
                                                                   cachedLocalAddress, remoteAddress, MaskingMode.All, faultMode,
                                                                   defaultCloseTimeout, defaultSendTimeout));
            }
            else
            {
                throw Fx.AssertAndThrow("ServerReliableChannelBinder supports creation of IDuplexChannel, IDuplexSessionChannel, IReplyChannel, and IReplySessionChannel only.");
            }
        }
コード例 #8
0
        public static IClientReliableChannelBinder CreateBinder(EndpointAddress to, Uri via,
                                                                IChannelFactory <TChannel> factory, MaskingMode maskingMode, TolerateFaultsMode faultMode,
                                                                ChannelParameterCollection channelParameters,
                                                                TimeSpan defaultCloseTimeout, TimeSpan defaultSendTimeout)
        {
            Type type = typeof(TChannel);

            if (type == typeof(IDuplexChannel))
            {
                return(new DuplexClientReliableChannelBinder(to, via, (IChannelFactory <IDuplexChannel>)(object) factory, maskingMode,
                                                             channelParameters, defaultCloseTimeout, defaultSendTimeout));
            }
            else if (type == typeof(IDuplexSessionChannel))
            {
                return(new DuplexSessionClientReliableChannelBinder(to, via, (IChannelFactory <IDuplexSessionChannel>)(object) factory, maskingMode,
                                                                    faultMode, channelParameters, defaultCloseTimeout, defaultSendTimeout));
            }
            else if (type == typeof(IRequestChannel))
            {
                return(new RequestClientReliableChannelBinder(to, via, (IChannelFactory <IRequestChannel>)(object) factory, maskingMode,
                                                              channelParameters, defaultCloseTimeout, defaultSendTimeout));
            }
            else if (type == typeof(IRequestSessionChannel))
            {
                return(new RequestSessionClientReliableChannelBinder(to, via, (IChannelFactory <IRequestSessionChannel>)(object) factory, maskingMode,
                                                                     faultMode, channelParameters, defaultCloseTimeout, defaultSendTimeout));
            }
            else
            {
                throw Fx.AssertAndThrow("ClientReliableChannelBinder supports creation of IDuplexChannel, IDuplexSessionChannel, IRequestChannel, and IRequestSessionChannel only.");
            }
        }
コード例 #9
0
 public RequestSessionClientReliableChannelBinder(EndpointAddress to, Uri via,
                                                  IChannelFactory <IRequestSessionChannel> factory, MaskingMode maskingMode, TolerateFaultsMode faultMode,
                                                  ChannelParameterCollection channelParameters,
                                                  TimeSpan defaultCloseTimeout, TimeSpan defaultSendTimeout)
     : base(to, via, factory, maskingMode, faultMode, channelParameters, defaultCloseTimeout,
            defaultSendTimeout)
 {
 }
コード例 #10
0
 protected ServerReliableChannelBinder(ChannelBuilder builder, EndpointAddress remoteAddress, MessageFilter filter, int priority, MaskingMode maskingMode, TolerateFaultsMode faultMode, TimeSpan defaultCloseTimeout, TimeSpan defaultSendTimeout) : base(default(TChannel), maskingMode, faultMode, defaultCloseTimeout, defaultSendTimeout)
 {
     this.pendingChannelEvent = new InterruptibleWaitObject(false, false);
     this.listener            = builder.BuildChannelListener <TChannel>(filter, priority);
     this.remoteAddress       = remoteAddress;
 }
コード例 #11
0
 protected ServerReliableChannelBinder(TChannel channel, EndpointAddress cachedLocalAddress, EndpointAddress remoteAddress, MaskingMode maskingMode, TolerateFaultsMode faultMode, TimeSpan defaultCloseTimeout, TimeSpan defaultSendTimeout) : base(channel, maskingMode, faultMode, defaultCloseTimeout, defaultSendTimeout)
 {
     this.pendingChannelEvent = new InterruptibleWaitObject(false, false);
     this.cachedLocalAddress  = cachedLocalAddress;
     this.remoteAddress       = remoteAddress;
 }