Exemplo n.º 1
0
        public void UpdateData(string value)
        {
            Console.WriteLine("Data Arrived to update in DB: " + value);
            ICallbackContract CallBackInstance = OperationContext.Current.GetCallbackChannel <ICallbackContract>();

            CallBackInstance.CallBackFunction("Notification: Data Updated in DB");
        }
Exemplo n.º 2
0
        public ClientSetup(ICallbackContract callbackContractImplementation)
        {
            _callbackContractImplementation = callbackContractImplementation;

            ClientId = Guid.NewGuid();

            _updateCommunicationChannelTimer           = new Timer(1000);
            _updateCommunicationChannelTimer.Elapsed  += _updateCommunicationChannel;
            _updateCommunicationChannelTimer.Enabled   = true;
            _updateCommunicationChannelTimer.AutoReset = false;
            _updateCommunicationChannelTimer.Start();

            _clientPipeBinding = new NetNamedPipeBinding
            {
                Security =
                {
                    Mode      = NetNamedPipeSecurityMode.Transport,
                    Transport = new NamedPipeTransportSecurity()
                    {
                        ProtectionLevel = ProtectionLevel.EncryptAndSign
                    }
                },
                MaxConnections = 10,
                OpenTimeout    = new TimeSpan(0, 0, 30),
                ReceiveTimeout = new TimeSpan(0, 0, 5),
                SendTimeout    = new TimeSpan(0, 0, 5),
            };
        }
Exemplo n.º 3
0
 public Client(DataService dataService, string sessionId, ICallbackContract callbackContract)
 {
     this._dataService     = dataService;
     this.SessionId        = sessionId;
     this.CallbackContract = callbackContract;
     this._subscriptions   = new HashSet <ISubscribable>();
 }
Exemplo n.º 4
0
        public void UnRegist()
        {
            ICallbackContract callbackChannel = OperationContext.Current.GetCallbackChannel <ICallbackContract>();

            //从管理列表中移除
            ChannelManager.Instance.Remove(callbackChannel);
        }
Exemplo n.º 5
0
        public void Regist()
        {
            ICallbackContract callbackChannel = OperationContext.Current.GetCallbackChannel <ICallbackContract>();

            //添加到管理列表中
            ChannelManager.Instance.Add(callbackChannel);
        }
Exemplo n.º 6
0
 /// <summary>
 /// 从通道列表中移除对一个通道的管理
 /// </summary>
 /// <param name="callbackChannel"></param>
 public void Remove(ICallbackContract callbackChannel)
 {
     if (!callbackChannelList.Contains(callbackChannel))
     {
         Console.WriteLine("不存在待移除通道");
     }
     else
     {
         lock (SyncObj)
         {
             callbackChannelList.Remove(callbackChannel);
             Console.WriteLine("移除了一个通道");
         }
     }
 }
Exemplo n.º 7
0
 /// <summary>
 /// 将回调通道加入到通道列表中进行管理
 /// </summary>
 /// <param name="callbackChannel"></param>
 public void Add(ICallbackContract callbackChannel)
 {
     if (callbackChannelList.Contains(callbackChannel))
     {
         Console.WriteLine("已存在重复通道");
     }
     else
     {
         lock (SyncObj)
         {
             callbackChannelList.Add(callbackChannel);
             Console.WriteLine("添加了新的通道");
         }
     }
 }
Exemplo n.º 8
0
 public void InvokeWcf(this ICallbackContract contract, Action<ICallbackContract> op)
 {
     if (((ICommunicationObject)contract).State != CommunicationState.Opened)
     {
         lock (this.Callbacks)
             Callbacks.Remove(contract);
         myLogger.LogError("That contract isn't open! Disconnected.");
         return;
     }
     try
     {
         op(contract);
     }
     catch (TimeoutException ex)
     {
         lock (this.Callbacks)
             Callbacks.Remove(contract);
         myLogger.LogError("That contract timed out! Disconnected.", ex);
         return;
     }
     catch (CommunicationException ex)
     {
Exemplo n.º 9
0
        void IServerContract.RegisterClient()
        {
            if (OperationContext.Current.SessionId == null)
            {
                return;
            }
            string sessionId = OperationContext.Current.SessionId;

            try
            {
                this._clientLock.EnterWriteLock();
                ICallbackContract callbackContract = OperationContext.Current.GetCallbackChannel <ICallbackContract>();
                IClientChannel    channel          = (IClientChannel)callbackContract;
                channel.Closed  += this.Channel_ClosedOrFaulted;
                channel.Faulted += this.Channel_ClosedOrFaulted;
                this._clients.Add(sessionId, new Client(this, sessionId, callbackContract));
            }
            finally
            {
                this._clientLock.ExitWriteLock();
            }
            Debug.WriteLine(string.Concat("Registered client ", sessionId, "."));
        }
Exemplo n.º 10
0
 public void AddSession(ICallbackContract callback, string sessionId)
 {
     _channels.TryAdd(sessionId, callback);
 }
Exemplo n.º 11
0
 public void Hook()
 {
     _callback = OperationContext.Current.GetCallbackChannel <ICallbackContract>();
 }
Exemplo n.º 12
0
 public void AddSession(ICallbackContract callback, string sessionId)
 {
     _channels.TryAdd(sessionId, callback);
 }