/// <summary>
        /// 呼び出しオブジェクトと動作設定を指定してインスタンスを生成します。
        /// </summary>
        /// <param name="invoker">呼び出しオブジェクト</param>
        /// <param name="settings">動作設定</param>
        public static GrpcCallInvoker Create(CallInvoker invoker, GrpcClientSettings settings)
        {
            GrpcClientSettings clone = null;

            if (settings != null)
            {
                clone = settings.CreateDeepClone();
            }

            return(new GrpcCallInvoker(invoker, clone));
        }
Exemple #2
0
        /// <summary>
        /// ディープクローンを生成します。
        /// </summary>
        /// <returns></returns>
        internal GrpcClientSettings CreateDeepClone()
        {
            GrpcClientSettings clone = this.MemberwiseClone() as GrpcClientSettings;

            clone.m_InvokingInterceptors = new List <IGrpcClientMethodInvokingInterceptor>();
            clone.m_InvokingInterceptors.AddRange(m_InvokingInterceptors);

            clone.m_InvokedInterceptors = new List <IGrpcClientMethodInvokedInterceptor>();
            clone.m_InvokedInterceptors.AddRange(m_InvokedInterceptors);

            clone.m_ExceptionHandlers = new List <IGrpcClientMethodExceptionHandler>();
            clone.m_ExceptionHandlers.AddRange(m_ExceptionHandlers);

            return(clone);
        }
 /// <summary>
 /// 呼び出しオブジェクトを指定してインスタンスを生成します。
 /// </summary>
 /// <param name="invoker">呼び出しオブジェクト</param>
 /// <param name="settings">動作設定</param>
 protected GrpcCallInvoker(CallInvoker invoker, GrpcClientSettings settings) : base()
 {
     m_Invoker  = invoker;
     m_Settings = settings ?? new GrpcClientSettings();
     m_Settings.SortInterceptors();
 }
 /// <summary>
 /// チャネルを指定してインスタンスを生成します。
 /// </summary>
 /// <param name="channel">チャネル</param>
 /// <param name="settings">動作設定</param>
 protected GrpcCallInvoker(Channel channel, GrpcClientSettings settings) : this(new DefaultCallInvoker(channel), settings)
 {
 }