internal void Configure(GiopClientConnectionManager conManager, GiopMessageHandler messageHandler,
                         IiopUrlUtil iiopUrlUtil,
                         RetryConfig retries) {
     m_conManager = conManager;
     m_messageHandler = messageHandler;
     m_iiopUrlUtil = iiopUrlUtil;
     m_retries = retries;
 }
 /// <summary>
 /// Configures the installed IIOPClientSideFormatterProivder
 /// </summary>
 /// <param name="interceptionOptions"></param>
 private void ConfigureSinkProviderChain(GiopClientConnectionManager conManager,
                                         GiopMessageHandler messageHandler,
                                         IiopUrlUtil iiopUrlUtil,
                                         RetryConfig retries)
 {
     IClientChannelSinkProvider prov = m_providerChain;
     while (prov != null)
     {
         if (prov is IiopClientFormatterSinkProvider)
         {
             ((IiopClientFormatterSinkProvider)prov).Configure(conManager, messageHandler, iiopUrlUtil,
                                                               retries);
             break;
         }
         prov = prov.Next;
     }
 }
        private readonly Hashtable m_typesVerified = new Hashtable(); // contains the verified types for this proxy

        #endregion IFields
        #region IConstructors

        /// <param name="nextSink">the next sink in the channel. In this sink chain, a
        /// IiopClientTransportSink must be present.</param>
        internal IiopClientFormatterSink(IClientChannelSink nextSink, GiopClientConnectionManager conManager,
                                         GiopMessageHandler messageHandler,
                                         IiopUrlUtil iiopUrlUtil,
                                         RetryConfig retries) {
            m_nextSink = nextSink;
            m_conManager = conManager;
            m_messageHandler = messageHandler;
            m_iiopUrlUtil = iiopUrlUtil;
            m_retries = retries;
        }
        /// <summary>the constructor used by the config file</summary>
        public IiopClientChannel(IDictionary properties, IClientChannelSinkProvider sinkProvider)
        {
            if (!CheckSinkProviderChain(sinkProvider))
            {
                throw new ArgumentException(
                     "IIOPClientSideFormatter provider not found in chain, this channel is only usable with the IIOPFormatters");
            }
            m_providerChain = sinkProvider;
            IDictionary nonDefaultOptions = new Hashtable();
            int receiveTimeOut = 0;
            int sendTimeOut = 0;
            ArrayList interceptionOptions = new ArrayList();
            int maxNumberOfRetries = MAX_NUMBER_OF_RETRIES;
            int retryDelay = RETRY_DELAY;

            if (properties != null)
            {
                foreach (DictionaryEntry entry in properties)
                {
                    switch ((string)entry.Key)
                    {
                        case IiopChannel.CHANNEL_NAME_KEY:
                            m_channelName = (string)entry.Value;
                            break;
                        case IiopChannel.PRIORITY_KEY:
                            m_channelPriority = Convert.ToInt32(entry.Value);
                            break;
                        case IiopChannel.TRANSPORT_FACTORY_KEY:
                            Type transportFactoryType = Type.GetType((string)entry.Value, true);
                            m_transportFactory = (IClientTransportFactory)
                                Activator.CreateInstance(transportFactoryType);
                            break;
                        case IiopClientChannel.CLIENT_RECEIVE_TIMEOUT_KEY:
                            receiveTimeOut = Convert.ToInt32(entry.Value);
                            break;
                        case IiopClientChannel.CLIENT_SEND_TIMEOUT_KEY:
                            sendTimeOut = Convert.ToInt32(entry.Value);
                            break;
                        case IiopClientChannel.CLIENT_REQUEST_TIMEOUT_KEY:
                            int requestTimeOutMilllis = Convert.ToInt32(entry.Value);
                            m_requestTimeOut = new MessageTimeout(TimeSpan.FromMilliseconds(requestTimeOutMilllis));
                            break;
                        case IiopClientChannel.CLIENT_UNUSED_CONNECTION_KEEPALIVE_KEY:
                            m_unusedClientConnectionTimeOut = Convert.ToInt32(entry.Value);
                            break;
                        case IiopClientChannel.CLIENT_CONNECTION_LIMIT_KEY:
                            m_maxNumberOfConnections = Convert.ToInt32(entry.Value);
                            break;
                        case IiopClientChannel.ALLOW_REQUEST_MULTIPLEX_KEY:
                            m_allowMultiplex = Convert.ToBoolean(entry.Value);
                            break;
                        case IiopClientChannel.MAX_NUMBER_OF_MULTIPLEXED_REQUESTS_KEY:
                            m_maxNumberOfMultplexedRequests = Convert.ToInt32(entry.Value);
                            break;
                        case IiopClientChannel.MAX_NUMBER_OF_RETRIES_KEY:
                            maxNumberOfRetries = Convert.ToInt32(entry.Value);
                            break;
                        case IiopClientChannel.RETRY_DELAY_KEY:
                            retryDelay = Convert.ToInt32(entry.Value);
                            break;
                        case IiopChannel.BIDIR_KEY:
                            m_isBidir = Convert.ToBoolean(entry.Value);
                            interceptionOptions.Add(new BiDirIiopInterceptionOption());
                            break;
                        case IiopChannel.ENDIAN_KEY:
                            Endian endian =
                                (Endian)Enum.Parse(typeof(Endian), (string)entry.Value);
                            m_headerFlags = GiopHeader.GetDefaultHeaderFlagsForEndian(endian);
                            break;
                        default:
                            Debug.WriteLine("non-default property found for IIOPClient channel: " + entry.Key);
                            nonDefaultOptions[entry.Key] = entry.Value;
                            break;
                    }
                }
            }
            m_retryConfig = new RetryConfig(maxNumberOfRetries, retryDelay);
            m_interceptionOptions =
                (IInterceptionOption[])interceptionOptions.ToArray(typeof(IInterceptionOption));
            // handle the options now by transport factory
            m_transportFactory.SetClientTimeOut(receiveTimeOut, sendTimeOut);
            m_transportFactory.SetupClientOptions(nonDefaultOptions);
            InitChannel();
        }