Example #1
0
        public int RegisterService(object obj)
        {
            bool is_handler = false;

            foreach (var iftype in obj.GetType().GetInterfaces())
            {
                string ifname    = iftype.FullName;
                int    iface_pos = ifname.IndexOf("+Iface");
                if (iface_pos > 0)
                {
                    Type ptype = Type.GetType(ifname.Substring(0, iface_pos) + "+Processor");
                    if (ptype != null)
                    {
                        TProcessor processor = Activator.CreateInstance(ptype, new object[] { obj }) as TProcessor;
                        if (processor != null)
                        {
                            service_processor_map_.Add(processor.ServiceName(), processor);
                            is_handler = true;
                        }
                    }
                }
            }
            if (!is_handler)
            {
                throw new ArgumentException("RegisterService accept rpc handler only");
            }
            return(0);
        }