Пример #1
0
        protected virtual void Watch(ServiceRegistryMetta metta)
        {
            if (_watcher == null)
            {
                return;
            }

            _watcher.Watch(metta.ServerAddress, new WatcherOptions
            {
                ServiceMetta = metta
            });
        }
Пример #2
0
        protected virtual void Unwatch(ServiceRegistryMetta metta)
        {
            if (_watcher == null)
            {
                return;
            }

            if (!_watcher.IsInWatchList(metta.ServerAddress))
            {
                return;
            }

            _watcher.Unwatch(metta.ServerAddress);
        }
Пример #3
0
        public ServiceRegistryMetta Select(Type interfaceType, ServiceRegistryMetta[] metta)
        {
            if (_currUsedInvoker.ContainsKey(interfaceType))
            {
                int currIdx;
                if (_currUsedInvoker.TryGetValue(interfaceType, out currIdx))
                {
                    currIdx = currIdx >= metta.Length - 1 ? 0 : currIdx + 1;
                    return metta[currIdx];
                }
            }

            _currUsedInvoker.TryAdd(interfaceType, 0);
            return metta[0];
        }
Пример #4
0
        public static RegistryDataInfo ToDataObject(this ServiceRegistryMetta metta)
        {
            if (metta.ApiDomain == null)
            {
                return(null);
            }

            return(new RegistryDataInfo
            {
                ApiDomain = metta.ApiDomain,
                InterfaceName = metta.InterfaceType,
                InstanceName = metta.InstanceType,
                Protocol = metta.Protocol,
                SerializeMode = metta.SerializeMode,
                IsEnabled = metta.IsEnabled,
                ServerAddress = metta.ServerAddress,
                AdditionalFields = metta.Attributes
            });
        }
Пример #5
0
        public IInvoker CreateInvoker(ServiceRegistryMetta options)
        {
            //var exists = SeifApplication.AppEnv.GlobalConfiguration.Invokers.ContainsKey(options.Protocol);

            //if (!exists)
            //    throw new Exception(string.Format("Cann't find invoker by name {0}", options.Protocol));

            //return SeifApplication.AppEnv.GlobalConfiguration.Invokers[options.Protocol];

            var serializer = SeifApplication.GetSerializer(options.SerializeMode);

            switch (options.Protocol.ToUpperInvariant())
            {
                case "HTTPINVOKER":
                    return new HttpInvoker(options.ServerAddress, serializer, options.Attributes);
                default:
                    return null;
            }
        }
Пример #6
0
 public void NotifyChange(ServiceRegistryMetta data)
 {
     var message = _serializer.Serialize(data);
     _redisClient.PublishMessage(data.ServiceIdentifier, message);
 }
Пример #7
0
 public void UnregisterService(ServiceRegistryMetta nodeData)
 {
     _registryDataStore.Remove(nodeData.ServiceIdentifier);
     nodeData.IsEnabled = false;
     _registryNotify.NotifyChange(nodeData);
 }
Пример #8
0
 public void RegisterService(ServiceRegistryMetta nodeData)
 {
     _registryDataStore.Add(nodeData.ToDataObject());
     _registryNotify.NotifyChange(nodeData);
 }