Exemplo n.º 1
0
 public void Start()
 {
     CacheMessage.Subscribe(n => SendMessage(n), CacheNotifyAction.Insert);
     CacheRegisterUser.Subscribe(n => RegisterUser(n), CacheNotifyAction.Insert);
     CacheCreateClient.Subscribe(n => CreateOrUpdateClient(n), CacheNotifyAction.Insert);
     CacheDisableClient.Subscribe(n => DisableClient(n), CacheNotifyAction.Insert);
 }
Exemplo n.º 2
0
 public void AddMesssage(CacheMessage message)
 {
     list.ForEach(t =>
     {
         t.Add(message);
     });
 }
Exemplo n.º 3
0
 public void Stop()
 {
     CacheMessage.Unsubscribe(CacheNotifyAction.Insert);
     CacheRegisterUser.Unsubscribe(CacheNotifyAction.Insert);
     CacheCreateClient.Unsubscribe(CacheNotifyAction.Insert);
     CacheDisableClient.Unsubscribe(CacheNotifyAction.Insert);
 }
Exemplo n.º 4
0
        protected void SetResponse(Expression <Func <StatusCode, int> > selector, object input, BaseOutput output)
        {
            var messageInfo = CacheMessage.Get(selector);

            output.code = messageInfo.Code;
            output.msg  = messageInfo.Description;
        }
Exemplo n.º 5
0
        public static void TryEnqueue(this IBusContext ctx, CacheMessage message)
        {
            if (message == null)
            {
                return;
            }

            ctx.Enqueue(ContextName, message);
        }
Exemplo n.º 6
0
        private static void SendInternal(this IBusContext ctx, CacheMessage message, bool onCallback = false)
        {
            if (onCallback)
            {
                message.Token = message.Token ?? message.RequestId.ToString();
                MessageLogger.Sended(message);
            }

            ctx.Enqueue(ContextName, message);
        }
        public void CacheHitQuery(string id, bool count)
        {
            var msg = new CacheMessage()
            {
                Connection = id,
                Kind       = count ? Kind.CachedCount : Kind.CachedQuery
            }.AsTimedMessage(GetPoint());

            msg.Duration = NearlyNothing;
            Publish2(msg);
        }
        public void CacheHitObject(string id, int objs)
        {
            var msg = new CacheMessage()
            {
                Connection = id,
                Kind       = Kind.CachedObject,
                Objects    = objs
            }.AsTimedMessage(GetPoint());

            msg.Duration = NearlyNothing;
            Publish2(msg);
        }
Exemplo n.º 9
0
 /// <summary>
 /// 设置单个数据
 /// </summary>
 /// <typeparam name="T">数据类型</typeparam>
 /// <param name="key">key</param>
 /// <param name="value">值</param>
 /// <param name="expiry">过期时间</param>
 /// <returns></returns>
 private bool SetAndPublish <T>(string key, T value, TimeSpan?expiry = null)
 {
     if (expiry.HasValue)
     {
         _memoryCache.Set(key, value, expiry.Value);
     }
     else
     {
         _memoryCache.Set(key, value);
     }
     _messageBus?.PublishAsync(CacheSyncChannel, CacheMessage.SetDeleteMessage(_serverId, key));
     return(true);
 }
Exemplo n.º 10
0
        private void Timer_Run(object state)
        {
            //处理日志信息
            List <CacheMessage> list = MonitorCache.GetInstance().PopMessages(CacheEnum.LogMonitor);

            while (list.Count > 0)
            {
                CacheMessage message = list[0];
                string       text    = string.Format("{0} -- Message:{1} -- Stack Trace:{2}", message.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss"), message.Message, message.StackTrace);
                //_logger.Write(text, false);
                list.Remove(message);
            }
        }
Exemplo n.º 11
0
        public virtual void StoreCache(CacheMessage message)
        {
            if (message == null)
            {
                return;
            }

            var dto = message.Content.JsonDeserialize <T>();

            if (dto == null)
            {
                return;
            }

            Process(dto);
        }
Exemplo n.º 12
0
        private static void Loging()
        {
            SimpleLogger _logger = new SimpleLogger(_logPath);

            while (1 == 1)
            {
                //处理日志信息
                List <CacheMessage> list = MonitorCache.GetInstance().PopMessages(CacheEnum.LogMonitor);
                while (list.Count > 0)
                {
                    CacheMessage message = list[0];
                    string       text    = string.Format("{0} -- Message:{1} -- Stack Trace:{2}", message.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss"), message.Message, message.StackTrace);
                    _logger.Write(text, false);
                    list.Remove(message);
                }
                Thread.Sleep(100);
            }
        }
Exemplo n.º 13
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            //处理日志信息
            List <CacheMessage> list = MonitorCache.GetInstance().PopMessages(CacheEnum.FormMonitor);

            while (list.Count > 0)
            {
                if (lbMessage.Items.Count > 100000)
                {
                    lbMessage.Items.Clear();
                }
                else
                {
                    CacheMessage message = list[0];
                    string       text    = string.Format("{0} -- {1}\r\n", message.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss"), message.Message);
                    lbMessage.Items.Insert(0, text);
                    list.Remove(message);
                }
            }
            tssTimer.Text = "时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }
Exemplo n.º 14
0
        private void OnMessage(CacheMessage message)
        {
            if (message == null ||
                message.Keys == null ||
                message.ServiceId == SERVICE_ID) //非本程序发送的消息,不做处理
            {
                return;
            }

            //检测缓存是否存在
            for (var i = 0; i < message.Keys.Length; i++)
            {
                var key = message.Keys[i];
                if (string.IsNullOrEmpty(key))
                {
                    continue;
                }

                _memoryStore.Remove(key);
            }
        }
Exemplo n.º 15
0
        public async Task <TaskResult <ulong> > PostMessage(PlanetMessage msg)
        {
            //ClientMessage msg = JsonConvert.DeserializeObject<ClientMessage>(json);

            if (msg == null)
            {
                return(new TaskResult <ulong>(false, "Malformed message.", 0));
            }

            ulong channel_id = msg.Channel_Id;

            PlanetChatChannel channel = await Context.PlanetChatChannels.FindAsync(channel_id);

            // Get index for message
            ulong index = channel.Message_Count;

            // Update message count. May have to queue this in the future to prevent concurrency issues.
            channel.Message_Count += 1;
            await Context.SaveChangesAsync();

            msg.Message_Index = index;

            string json = JsonConvert.SerializeObject(msg);

            await MessageHub.Current.Clients.Group(channel_id.ToString()).SendAsync("Relay", json);

            CacheMessage cachemsg = new CacheMessage();

            cachemsg.Channel_Id    = msg.Channel_Id;
            cachemsg.Content       = msg.Content;
            cachemsg.Message_Index = msg.Message_Index;
            cachemsg.TimeSent      = msg.TimeSent;
            cachemsg.Author_Id     = msg.Author_Id;

            await Context.Messages.AddAsync(cachemsg);

            await Context.SaveChangesAsync();

            return(new TaskResult <ulong>(true, $"Posted message {msg.Message_Index}.", index));
        }
Exemplo n.º 16
0
        public async Task <bool> Handle(SendMessageCommand request, CancellationToken cancellationToken)
        {
            // Get User from Cache
            CacheUser cacheUser = await _chatCacheModule.GetUserAsync(request.ConnectionId, cancellationToken);

            if (cacheUser == null)
            {
                throw new Exception("User doesnt exist. Please login");
            }

            // Get User's Room from Cache
            if (cacheUser.ConnectedRoomId == null)
            {
                throw new Exception("User didnt join any room. Please join to a room");
            }
            CacheRoom cacheRoom = await _chatCacheModule.GetRoomAsync(cacheUser.ConnectedRoomId, cancellationToken);

            // Set Room Message
            CacheMessage cacheMessage = new CacheMessage()
            {
                Message = request.Message, DateTime = request.DateTime, SenderNickName = cacheUser.NickName
            };

            cacheRoom.Messages.Add(cacheMessage);
            await _chatCacheModule.SetRoomAsync(cacheRoom, cancellationToken);

            // Publish
            await _mediator.Publish(
                new ReceiveMessageNotification()
            {
                RoomId = cacheUser.ConnectedRoomId, ConnectionId = request.ConnectionId, CacheMessage = cacheMessage
            },
                cancellationToken);

            return(await Task.FromResult(true));
        }
Exemplo n.º 17
0
 public void Add(CacheMessage message)
 {
     MonitorCache.GetInstance().PushMessage(message, CacheEnum.FormMonitor);
 }
Exemplo n.º 18
0
 public void SendMessage(NotifyMessage m)
 {
     CacheMessage.Publish(m, CacheNotifyAction.Insert);
 }