Пример #1
0
 private void RecreateChannel(ulong id)
 {
     lock (@lock)
     {
         if (channels_list.ContainsKey(id))
         {
             Net2Base instance = (channels_list[id] as INet2Handler).Instance;
             DeleteChannelsEvents(instance);
             if (instance is Net2Publisher)
             {
                 (channels_list[id] as INet2Handler).ReleaseInstance();
                 (channels_list[id] as INet2Handler).SetInstance(publisher(instance.Name));
             }
             else if (instance is Net2Subscriber)
             {
                 (channels_list[id] as INet2Handler).ReleaseInstance();
                 (channels_list[id] as INet2Handler).SetInstance(subscriber(instance.Name));
             }
             else if (instance is Net2Service)
             {
                 (channels_list[id] as INet2Handler).ReleaseInstance();
                 (channels_list[id] as INet2Handler).SetInstance(service(instance.Name, (instance as Net2Service).ResponseCallback));
             }
             else if (instance is Net2Client)
             {
                 (channels_list[id] as INet2Handler).ReleaseInstance();
                 (channels_list[id] as INet2Handler).SetInstance(client(instance.Name));
             }
             channels_list.Add(channels_list[id].Id, channels_list[id]);
             channels_list.Remove(id);
         }
     }
 }
Пример #2
0
            void INet2Handler.SetInstance(Net2Base instance)
            {
                if (net2_instance != null)
                {
                    throw new Exception("Handler allready has a channel instance!");
                }
                net2_instance = instance;

                _AddInstance();
            }
Пример #3
0
            protected virtual void _ReleaseInstance()
            {
                if (net2_instance != null)
                {
                    net2_instance.delegateNewLog         -= Net2_instance_delegateNewLog;
                    net2_instance.delegateStateChanged   -= Net2_instance_delegateStateChanged;
                    net2_instance.delegateReceiveChanged -= Net2_instance_delegateReceiveChanged;
                    net2_instance.delegateSendChanged    -= Net2_instance_delegateSendChanged;

                    net2_instance.Dispose();
                    net2_instance = null;
                }
            }
Пример #4
0
        private void ReleaseChannel(ulong id)
        {
            Net2Base instance = null;

            lock (@lock)
            {
                if (channels_list.ContainsKey(id))
                {
                    instance = (channels_list[id] as INet2Handler).Instance;
                    net2_consul.removeService(instance.Name);
                    channels_list.Remove(id);
                }
            }
            if (instance != null)
            {
                DeleteChannelsEvents(instance);
            }
        }
Пример #5
0
 private void DeleteChannelsEvents(Net2Base instance)
 {
     if (instance == null)
     {
         return;
     }
     if (instance is Net2Publisher)
     {
         instance.delegateDisposing -= DisposingChannel;
         instance.delegateGetTime   -= getTime;
         instance.delegateCrashed   -= ChannelCrashed;
         instance.delegateNewLog    -= delegateNewLog;
     }
     else if (instance is Net2Subscriber)
     {
         instance.delegateDisposing -= DisposingChannel;
         instance.delegateGetTime   -= getTime;
         (instance as Net2Subscriber).delegateGetServiceInfo -= getService;
         instance.delegateCrashed -= ChannelCrashed;
         instance.delegateNewLog  -= delegateNewLog;
     }
     else if (instance is Net2Service)
     {
         instance.delegateDisposing -= DisposingChannel;
         instance.delegateGetTime   -= getTime;
         instance.delegateCrashed   -= ChannelCrashed;
         instance.delegateNewLog    -= delegateNewLog;
     }
     else if (instance is Net2Client)
     {
         instance.delegateDisposing -= DisposingChannel;
         instance.delegateGetTime   -= getTime;
         (instance as Net2Client).delegateGetServiceInfo -= getService;
         instance.delegateCrashed -= ChannelCrashed;
         instance.delegateNewLog  -= delegateNewLog;
     }
 }