コード例 #1
0
ファイル: AccountMapping.cs プロジェクト: whensummit/kailsdf
        /// <summary>
        /// 投注端退出了,注销资源,通知他的控盘端下线
        /// </summary>
        public static void RemoveBetServer(Session session)
        {
            if (AvailableBetServers.ContainsKey(session.ClientId))
            {
                int value;
                AvailableBetServers.TryRemove(session.ClientId, out value);
            }

            // 通知该服务端影响到的一批客户端下线
            var allClients = SessionPool.GetClientsGroup(ClientTypeEnum.Client);

            if (allClients.Count == 0)
            {
                return;
            }
            var clientIds = allClients.Keys.ToArray();

            foreach (var clientId in clientIds)
            {
                if (allClients[clientId].BetServerId == session.ClientId)
                {
                    MQRouterSendQueue.PushBetServerClose(clientId);
                }
            }
        }
コード例 #2
0
ファイル: BetControler.cs プロジェクト: whensummit/kailsdf
        /// <summary>
        /// 转发退码命令到出货客户端
        /// </summary>
        /// <param name="sessionId">下注端ID</param>
        /// <param name="betContent">下注结果信息</param>
        /// <returns></returns>
        public static MQActionVoidResult DeleteBet(string sessionId, BetContentResult betContent)
        {
            var session = SessionPool.GetClientsGroup(ClientTypeEnum.Bet);

            if (session != null)
            {
                foreach (var item in session)
                {
                    if (item.Value.platform.Value == betContent.BetPlatformEnum)
                    {
                        MQRouterSendQueue.PushDeleteBet(item.Key, betContent);
                    }
                }
                return(new MQActionVoidResult()
                {
                    IsOK = true
                });
            }
            else
            {
                return(new MQActionVoidResult()
                {
                    IsOK = false, ErrorMsg = "未找到下注客户端"
                });
            }
        }
コード例 #3
0
        public void ThreadMQRouterSend()
        {
            try
            {
                using (RouterSocket routerSocket = new RouterSocket())
                {
                    routerSocket.Bind(MQConfig.RouterSendServer);

                    while (!_cancellationTokenSource.IsCancellationRequested)
                    {
                        try
                        {
                            IdKeyData item;
                            if (MQRouterSendQueue.TryTake(out item))
                            {
                                routerSocket.RouterSend(item);
                            }
                        }
                        catch (TerminatingException)
                        {
                        }
                        catch (Exception ex)
                        {
                            MQThreadExceptionHandler?.Invoke(ex);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MQThreadExceptionHandler?.Invoke(ex);
            }
        }
コード例 #4
0
        /// <summary>
        /// 转发扫水结果到客户端
        /// </summary>
        /// <param name="sessionId">发送端</param>
        /// <param name="content">扫水结果</param>
        /// <returns></returns>
        public static MQActionVoidResult CollectCompletedToClient(string sessionId, CollectResult content)
        {
            var session = SessionPool.GetClientsGroup(ClientTypeEnum.Client);

            if (session != null)
            {
                foreach (var item in session)
                {
                    if (item.Key == content.ClientSessionID)
                    {
                        MQRouterSendQueue.PushCollectCompleted(item.Key, content);
                        break;
                    }
                }

                return(new MQActionVoidResult()
                {
                    IsOK = true
                });
            }
            else
            {
                return(new MQActionVoidResult()
                {
                    IsOK = false, ErrorMsg = "未找到出货客户端"
                });
            }
        }
コード例 #5
0
        private void btnPushMessage_Click(object sender, EventArgs e)
        {
            var session = SessionPool.GetClientsGroup(ClientTypeEnum.Bet);

            if (session != null)
            {
                var ses = session.First();
                MQRouterSendQueue.PushBetServerClose(ses.Key);
            }
        }
コード例 #6
0
ファイル: BetControler.cs プロジェクト: whensummit/kailsdf
        /// <summary>
        /// 转发下注命令到出货客户端
        /// </summary>
        /// <param name="sessionId">下注端ID</param>
        /// <param name="betContent">下注结果信息</param>
        /// <returns></returns>
        public static MQActionVoidResult BetCompleted(string sessionId, BetContentResult betContent)
        {
            var session = SessionPool.GetClientsGroup(ClientTypeEnum.Strategy);

            if (session != null)
            {
                foreach (var item in session)
                {
                    MQRouterSendQueue.PushAddBetCompleted(item.Key, betContent);
                }
                return(new MQActionVoidResult()
                {
                    IsOK = true
                });
            }
            else
            {
                return(new MQActionVoidResult()
                {
                    IsOK = false, ErrorMsg = "未找到下注客户端"
                });
            }
        }
コード例 #7
0
        /// <summary>
        /// 转发扫水命令到扫水客户端
        /// </summary>
        /// <param name="sessionId">命令发送端</param>
        /// <param name="betContent">扫水内容</param>
        /// <returns></returns>
        public static MQActionVoidResult SendCollect(string sessionId, Collect content)
        {
            var session = SessionPool.GetClientsGroup(ClientTypeEnum.Crawl);

            if (session != null)
            {
                foreach (var item in session)
                {
                    MQRouterSendQueue.SendCollect(item.Key, content);
                }

                return(new MQActionVoidResult()
                {
                    IsOK = true
                });
            }
            else
            {
                return(new MQActionVoidResult()
                {
                    IsOK = false, ErrorMsg = "未找到扫水客户端"
                });
            }
        }