コード例 #1
0
ファイル: Program.cs プロジェクト: hufuman/lyncmsg
 static List<MsgData> GetNextMsgs(SQLiteConnection sqlCnn, long msgId)
 {
     var listResult = new List<MsgData>();
     using (
         var reader = DbUtil.ExecuteSql(sqlCnn,
             "select MessageId, PlainMsg, HtmlMsg from Message where MessageId > @MsgId order by MessageId limit 100",
             new[]
             {
                 DbUtil.BuildParameter("@MsgId", DbType.Int64, msgId)
             }))
     {
         while (reader.Read())
         {
             var data = new MsgData
             {
                 MsgId = reader.GetInt64(0),
                 PlainMsg = reader.GetString(1),
                 HtmlMsg = reader.GetString(2)
             };
             if (!string.IsNullOrEmpty(data.HtmlMsg))
             {
                 data.PlainMsg = RemoveHtmlTags(data.HtmlMsg);
             }
             listResult.Add(data);
         }
     }
     return listResult;
 }
コード例 #2
0
 public void HasRecv(MsgData obj)
 {
     lock (msg_obj)
     {
         msgs.Add(obj);
     }
 }
コード例 #3
0
        //消息流转
        protected bool _TransitMsg(MsgData msgData)
        {
            bool success = false;

            switch (msgData.mode)
            {
            case EnumXMsgMode.Normal:
                if (_children.Count > 0)
                {
                    foreach (var child in _children)
                    {
                        child.SendMsg(msgData.msg, msgData.mode);
                    }
                    success = true;
                }
                break;

            case EnumXMsgMode.Reverse:
                if (_parent != null)
                {
                    _parent.SendMsg(msgData.msg, msgData.mode);
                    success = true;
                }
                break;
            }
            return(success);
        }
コード例 #4
0
        public void Dispatch(int msgId, byte[] data)
        {
            lock (locker)
            {
                List <MsgData> value;
                if (msgDict.TryGetValue(msgId, out value))
                {
                    for (int i = value.Count - 1; i >= 0; i--)
                    {
                        if (!value[i].Action.Target.Equals(null))
                        {
                            MsgData queueMsg = Pool <MsgData> .Instance.Allocate();

                            queueMsg.Action = value[i].Action;
                            queueMsg.data   = data;
                            msgQueue.Enqueue(queueMsg);
                        }
                        else
                        {
                            value.Remove(value[i]);
                            Pool <MsgData> .Instance.Recycle(value[i]);
                        }
                    }
                }
                else
                {
                    Debug.LogError("消息ID:" + msgId + "未注册");
                }
            }
        }
コード例 #5
0
        public void Regist(int msgId, Action <byte[]> action)
        {
            lock (locker)
            {
                if (action == null)
                {
                    return;
                }
                List <MsgData> value;
                if (!msgDict.TryGetValue(msgId, out value))
                {
                    value = new List <MsgData>();
                    msgDict.Add(msgId, value);
                }
                foreach (var item in value)
                {
                    if (item.Action == action)
                    {
                        Debug.LogWarning("重复注册!");
                        return;
                    }
                }
                MsgData msg = Pool <MsgData> .Instance.Allocate();

                msg.Action = action;
                value.Add(msg);
            }
        }
コード例 #6
0
ファイル: MSG.cs プロジェクト: yisea123/TestOne
        public void showmsg(TextBox tb)
        {
            if (list_msgdat.Count == 0 || tb == null)
            {
                return;
            }

            while (list_msgdat.Count > 0)
            {
                MsgData msg = list_msgdat.First();
                if ((msg.msg_type & MsgCfg) != 0)
                {
                    tb.AppendText(msg.ToString() + "\r\n");
                }

                if (((int)msg.msg_type & ((int)MsgCfg) >> 8) != 0)
                {
                    SaveMsg(msg.ToString());
                }
                if (tb.Lines.Count() > MsgMaxLine / 2)
                {
                    List <string> str_list = tb.Lines.ToList();
                    str_list.RemoveAt(0);
                    tb.Lines = str_list.ToArray();
                }

                tb.SelectionStart = tb.Text.Length;
                tb.ScrollToCaret();

                lock (LockObj)
                {
                    list_msgdat.RemoveFirst();
                }
            }
        }
コード例 #7
0
    public Player CreateRon(Vector3 pos, Quaternion rot, bool male = true, string name = "")
    {
        int modelIdx = male ? 0 : 1;

        if (name == "")
        {
            name = RandomName(male);
        }
        ForceUniqueName(ref name);

        // create player
        GameObject go           = GameObject.Instantiate(Resources.Load("Avatars/ron")) as GameObject;
        MsgData    userInitData = new MsgData();

        userInitData.name     = name;
        userInitData.playerID = UnityEngine.Random.Range(0, 8);
        User   user = new ReplayUser(userInitData);
        Player bot  = new Player(user, go, modelIdx, PlayerType.STEALTH, "", userInitData.name, 0);

        bot.isBot = true;

        // assign transform
        bot.gameObject.transform.position = pos;
        bot.gameObject.transform.rotation = rot;
        bot.gameObject.GetComponent <PlayerController>().forwardAngle = rot.eulerAngles.y;

        // make visible and kill bouncing
        bot.gameObject.SetActive(true);

        localBots.Add(name, bot);
        return(bot);
    }
コード例 #8
0
ファイル: Session.cs プロジェクト: zbxpcq/Afx.Lib
 /// <summary>
 /// 向client发送消息
 /// </summary>
 /// <param name="msg"></param>
 public virtual void Send(MsgData msg)
 {
     if (this.SendCall != null)
     {
         this.SendCall(msg, this);
     }
 }
コード例 #9
0
        public async Task OnlyPostSupportedMsgDataPckControllerReturnsResponceTrue()
        {
            var hubProxyFactoryMock = new Mock <IHubProxyFactory>();
            var iHubProxyMock       = new Mock <IHubProxy>();
            var tcs = new TaskCompletionSource <IHubProxy>();

            tcs.SetResult(iHubProxyMock.Object);
            var tcsProxy = new TaskCompletionSource <ReceiveResponce>();

            tcsProxy.SetResult(new ReceiveResponce(true));

            iHubProxyMock.Setup(set => set.Invoke <ReceiveResponce>(It.IsAny <string>(), It.IsAny <object[]>())).Returns(tcsProxy.Task);

            hubProxyFactoryMock.Setup(set => set.Create(It.IsAny <string>(), It.IsAny <string>())).Returns(tcs.Task);

            var msgHubClient = new MsgHubClientProxy(hubProxyFactoryMock.Object, "test");

            await msgHubClient.StartClientProxy().ConfigureAwait(false);

            var msgdata    = new MsgData();
            var msg        = new MsgDataPckController(msgdata);
            var postResult = await msgHubClient.Post <MsgDataPckController>(msg).ConfigureAwait(false);

            Assert.IsTrue(postResult.MsgProcessed);
        }
コード例 #10
0
ファイル: ReplayManager.cs プロジェクト: shldn/mdons
    private void PlayLastRoomVariableChanges(int startMsgIdx, int endMsgIdx)
    {
        if (startMsgIdx > endMsgIdx)
        {
            Debug.LogError("PlayLastRoomVariableChanges: startIdx shouldn\'t be greater than endIdx");
            return;
        }

        HashSet <string> handledVars = new HashSet <string>();

        for (int i = endMsgIdx; i >= startMsgIdx; --i)
        {
            MsgData msg = messagesToPlay[i];
            if (msg.msgType == SFSEvent.ROOM_VARIABLES_UPDATE)
            {
                for (int varcount = 0; varcount < msg.changedVars.Count; ++varcount)
                {
                    if (!handledVars.Contains(msg.changedVars[varcount].Name))
                    {
                        HandleRoomVariableUpdate(msg.changedVars[varcount]);
                        handledVars.Add(msg.changedVars[varcount].Name);
                    }
                }
            }
        }
    }
コード例 #11
0
ファイル: ReplayManager.cs プロジェクト: shldn/mdons
    private void PlayUserEnterExitMessages(int startMsgIdx, int endMsgIdx)
    {
        if (startMsgIdx > endMsgIdx)
        {
            Debug.LogError("PlayUserEnterExitMessages: startIdx shouldn\'t be greater than endIdx");
            return;
        }

        for (int i = startMsgIdx; i < endMsgIdx; ++i)
        {
            MsgData msg = messagesToPlay[i];
            if (msg.msgType == SFSEvent.USER_ENTER_ROOM || msg.msgType == SFSEvent.USER_EXIT_ROOM)
            {
                PlayBackMsg(msg);
            }
            else if (msg.msgType == SFSEvent.USER_VARIABLES_UPDATE)
            {
                bool msgPlayed = false;
                for (int j = 0; !msgPlayed && j < msg.changedVars.Count; ++j)
                {
                    if (msg.changedVars[j].Name == "op" || msg.changedVars[j].Name == "displayName")
                    {
                        PlayBackMsg(msg);
                        msgPlayed = true;
                    }
                }
            }
        }
    }
コード例 #12
0
        private void ExecCall(CmdMethodInfo cmdMethodInfo, TcpSocketAsync client, MsgData msg)
        {
            var session = client.UserState as Session;

            this.OnCmdExecutingEvent(session, msg);
            if (cmdMethodInfo != null && client != null)
            {
                ActionResult result = null;

                using (var controller = Activator.CreateInstance(cmdMethodInfo.Type) as Controller)
                {
                    try
                    {
                        controller.Init(session, msg);
                        if (this.OnAuth(cmdMethodInfo, session, msg, out result))
                        {
                            controller.OnExecuting();
                            result = cmdMethodInfo.Method.Invoke(controller, null) as ActionResult;
                            controller.OnResult(result);
                            this.OnCmdExecutedEvent(session, msg, result.Result);
                        }
                    }
                    catch (Exception ex)
                    {
                        bool ishand = false;
                        try
                        {
                            ExceptionContext excontext = new ExceptionContext()
                            {
                                Msg = msg, IsHandle = false, Exception = ex
                            };
                            controller.OnException(excontext);
                            ishand = excontext.IsHandle;
                            result = excontext.Result;
                        }
                        catch (Exception _ex)
                        {
                            this.OnMvcHostServerErrorEvent(_ex);
                        }
                        if (!ishand)
                        {
                            this.OnMvcHostServerErrorEvent(ex);
                        }
                        if (result == null)
                        {
                            result = new ActionResult();
                            result.SetMsg(MsgStatus.ServerError, "服务器发生错误!");
                        }
                    }
                }


                if (result != null && client.IsConnected)
                {
                    result.Result.Cmd = msg.Cmd;
                    result.Result.Id  = msg.Id;
                    this.SendMsg(result.Result, session);
                }
            }
        }
コード例 #13
0
        void Import(string file, string password = null)
        {
            var exportResult = WalletService.Default.ImportBackupWallet(file, password);

            if (!exportResult.IsFail)
            {
                //ShowMessage(LanguageService.Default.GetLanguageValue(MessageKeys.Import_sucesses));

                MessagePageData data = new MessagePageData();
                data.PageTitle = LanguageService.Default.GetLanguageValue(MessageKeys.Import_sucesses);
                MsgData iconData = new MsgData("path_msg_warming", Colors.Red);
                data.IconData = iconData;
                data.MsgItems.Add(new MsgData(LanguageService.Default.GetLanguageValue("Import_caption1"), Colors.Red));
                data.MsgItems.Add(new MsgData(LanguageService.Default.GetLanguageValue("Import_caption2"), "#333333"));
                data.MsgBtnShowType = MsgBtnType.Ok;
                data.CloseIsWord    = true;
                data.CloseWord      = "";
                data.SetOkCallBack(RestartApp);
                SendMessenger(Pages.MessagePage, data);
                UpdatePage(Pages.MessagePage);
            }
            else
            {
                ShowMessage(LanguageService.Default.GetLanguageValue(MessageKeys.Import_Fail));
                OnClosePopup();
            }
        }
コード例 #14
0
        private void OnClientReceive(TcpSocketAsync client, byte[] data, int length)
        {
            byte[]  buffer = this.OnDecrypt(data);
            MsgData msg    = MsgData.Deserialize(buffer);

            if (msg != null)
            {
                try
                {
                    if (cmdCallbackDic.ContainsKey(msg.Cmd))
                    {
                        var callModel = cmdCallbackDic[msg.Cmd];
                        this.ExecCall(callModel, client, msg);
                        return;
                    }
                    else
                    {
                        msg.Rest();
                        msg.Status = MsgStatus.Unknown;
                        this.SendMsg(msg, client.UserState as Session);
                        return;
                    }
                }
                catch (Exception ex)
                {
                    this.OnMvcHostServerErrorEvent(ex);
                }
            }
            else
            {
                this.OnMvcHostServerErrorEvent(new Exception(string.Format("client({0}): msg is null!", client.RemoteEndPoint.ToString())));
            }
        }
コード例 #15
0
    // Update is called once per frame
    private void Update()
    {
        _timeSinceLastPub += Time.deltaTime;
        if (_timeSinceLastPub >= 1 / ZmqPubRate)
        {
            var pubMsg   = new Msg();
            var position = _hip.position;
            var velocity = _hip.velocity;
            var msgData  = new MsgData
            {
                Position = new[] { position.x, position.y, position.z },
                Velocity = new[] { velocity.x, velocity.y, velocity.z },
                ID       = id
            };
            var pubMsgPayload = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(msgData));
            pubMsg.InitGC(pubMsgPayload, pubMsgPayload.Length);
            _pub.Send(ref pubMsg, false);
            _timeSinceLastPub = 0;
        }

        string recvStr;

        if (_sub.TryReceiveFrameString(out recvStr))
        {
            Debug.Log(recvStr);
        }
    }
コード例 #16
0
        private void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            this.BeginInvoke((MethodInvoker) delegate
            {
                lblProgress.Text = LanguageHelper.GetValueOf("UPDATE_LBL_PROGRESS");
                lblContent.Text  = LanguageHelper.GetValueOf("UPDATE_LBL_CONTENT_DOWNLOADED");
                lblInfo.Visible  = false;

                var dataMsg = new MsgData
                {
                    KeyCheck = "UPDATE",
                    Title    = LanguageHelper.GetValueOf("UPDATE_TITLE_SENDER"),
                    Message  = LanguageHelper.GetValueOf("UPDATE_MESSAGE_SENDER"),
                };

                if (e.Error == null)
                {
                    clsCommon.ShowMsg(MessageBoxIcon.Information, "UPDATE_MESSAGEBOX_MSG", "Message");

                    this.Hide();
                    this.Close();
                    var parentForm    = this.FormParent as MainForm;
                    parentForm.IsStop = true;
                    parentForm.MainForm_FormClosed(dataMsg, null);
                }
            });
        }
コード例 #17
0
        protected override void TakeRemote()
        {
            var session = paramGetter.GetSession();

            if (session == null)
            {
                ErrorCode = 10000;
                ErrorInfo = "Sessin is null.";
                return;
            }

            switch (_type)
            {
            case NoticeMode.AllService:
            {
                var sessionlist = GameSession.GetAll();
                foreach (var on in sessionlist)
                {
                    if (on.Connected && !on.IsRemote)
                    {
                        MsgData data = new MsgData();
                        data.Type   = MsgType.Notice;
                        data.UserId = on.UserId;

                        var parameters = new Parameters();
                        parameters["Type"]     = NoticeMode.AllService;
                        parameters["ServerID"] = _serverID;
                        parameters["Content"]  = _content;
                        data.Param             = parameters;
                        MsgDispatcher.Push(data);
                    }
                }
            }
            break;

            case NoticeMode.World:
            {
                var cache = new MemoryCacheStruct <ChatUser>();
                var list  = cache.FindAll(t => t.ServerID == _serverID);
                foreach (var v in list)
                {
                    var sess = GameSession.Get(v.UserId);
                    if (sess != null && sess.Connected && !sess.IsRemote)
                    {
                        MsgData data = new MsgData();
                        data.Type   = MsgType.Notice;
                        data.UserId = sess.UserId;

                        var parameters = new Parameters();
                        parameters["Type"]     = NoticeMode.World;
                        parameters["ServerID"] = _serverID;
                        parameters["Content"]  = _content;
                        data.Param             = parameters;
                        MsgDispatcher.Push(data);
                    }
                }
            }
            break;
            }
        }
コード例 #18
0
ファイル: ReplayManager.cs プロジェクト: shldn/mdons
    void PlayBackMsg(MsgData msg)
    {
        //Debug.LogError("time: " + DateTime.FromBinary(msg.time).ToString() + " id:" + msg.id + " name: " + msg.name + " msgType: " + msg.msgType);
        bool validPlayer = IsValidPlayer(msg.name);

        if (msg.msgType == SFSEvent.OBJECT_MESSAGE && msg.msg != null && validPlayer)
        {
            GetPlayer(ref msg); // hack to get the mouse colors to show up - problem when jumping in the timeline over the enter message.
            DataMessageManager.Inst.HandleObjectMessage(msg.id, SFSObject.NewFromBinaryData(new ByteArray(msg.msg)));
        }
        else if (msg.msgType == SFSEvent.USER_VARIABLES_UPDATE && validPlayer)
        {
            HandleUserVariableUpdate(ref msg);
        }
        else if (msg.msgType == SFSEvent.ROOM_VARIABLES_UPDATE)
        {
            HandleRoomVariableUpdate(ref msg);
        }
        else if (validPlayer && (msg.msgType == SFSEvent.PUBLIC_MESSAGE || msg.msgType == SFSEvent.PRIVATE_MESSAGE || msg.msgType == SFSEvent.ADMIN_MESSAGE))
        {
            HandleChatMessages(ref msg);
        }
        else if (validPlayer && (msg.msgType == SFSEvent.USER_ENTER_ROOM || msg.msgType == SFSEvent.USER_EXIT_ROOM))
        {
            HandleUserEnterExit(ref msg);
        }
        //else
        //    Debug.LogError("PlayBackMsg Unsupported type: " + msg.msgType);
    }
コード例 #19
0
    public void RpcDie(int killerId)
    {
        var data = new DieData();

        data.Victim   = name;
        data.IsVictim = photonView.IsMine;
        var view = PhotonView.Find(killerId);

        data.Killer   = view.name;
        data.IsKiller = view.Owner == PhotonNetwork.LocalPlayer;
        var msg = new MsgData()
        {
            Type = GameConst.MsgDie, Data = data
        };

        if (data.IsVictim)
        {
            Observable.Timer(System.TimeSpan.FromSeconds(3)).Subscribe(_ => PhotonNetwork.Destroy(gameObject)).AddTo(this);
        }
        else
        {
            _message.Publish(msg);
        }
        MessageBroker.Default.Publish(msg);
    }
コード例 #20
0
ファイル: ReplayManager.cs プロジェクト: shldn/mdons
 void HandleRoomVariableUpdate(ref MsgData msg)
 {
     for (int i = 0; i < msg.changedVars.Count; ++i)
     {
         HandleRoomVariableUpdate(msg.changedVars[i]);
     }
 }
コード例 #21
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="msg"></param>
        public void SendMessage(string toUser, string msg)
        {
            Jid to = new Jid(BuildJid(toUser));
            //to.Resource = "mobile";
            Jid from = new Jid(BuildJid(UserName));

            BodyBase[] bodies = new BodyBase[1];
            bodies[0] = new TextBody {
                type = "txt", msg = msg
            };

            /*
             * 发消息:
             * {"from":"weigang75","to":"march3","bodies":[{"type":"txt","msg":"?"}],"ext":{}};*/

            MsgData data = new MsgData()
            {
                from = UserName, to = toUser, bodies = bodies, ext = new { }
            };
            string  msgjson = JsonConvert.SerializeObject(data);
            Message msgNode = new Message(to, from, msgjson);

            msgNode.GenerateId();
            //msgNode.Thread = string.Concat("MSG_", (new Random()).Next(20000, 30000));
            msgNode.Type = MessageType.chat;
            Send(msgNode);
        }
コード例 #22
0
ファイル: ReplayManager.cs プロジェクト: shldn/mdons
    void HandleUserVariableUpdate(ref MsgData msg)
    {
        Player player = GetPlayer(ref msg);

        Vector3 newPos            = Vector3.zero;
        float   newRotAngle       = 0;
        int     transformMsgCount = 0;

        for (int i = 0; i < msg.changedVars.Count; ++i)
        {
            UserVariable userVar = msg.changedVars[i];
            if (userVar.Name == "playerModel")
            {
                Debug.LogError("Replay: Changed playerModel");
            }
            else if (userVar.Name == "x" || userVar.Name == "y" || userVar.Name == "z" || userVar.Name == "rot")
            {
                UpdateTransformVars(userVar, ref newRotAngle, ref newPos);
                transformMsgCount++;
                if (transformMsgCount == 4)
                {
                    bool rotChanged = newRotAngle != player.gameObject.transform.rotation.eulerAngles.y;
                    player.UpdateTransform(newPos, newRotAngle);
                    if (rotChanged)
                    {
                        player.playerController.shuffleTime = 0.25f;
                    }
                }
            }
            else
            {
                player.UpdateUserVar(userVar, true);
            }
        }
    }
コード例 #23
0
ファイル: SocketManager.cs プロジェクト: flyEagle2010/wild
 public void SendMsg(MsgData msgData)
 {
     lock (sendMsgQueue)
     {
         sendMsgQueue.Enqueue(msgData);
     }
 }
コード例 #24
0
ファイル: ReplayManager.cs プロジェクト: shldn/mdons
    void HandleUserEnterExit(ref MsgData msg) // const ref
    {
        bool entered = (msg.msgType == SFSEvent.USER_ENTER_ROOM);

        Debug.LogError("\tuser " + msg.id + " - " + msg.name + ((entered) ? " entered" : " left"));
        if (entered)
        {
            Player replayPlayer = null;
            if (!replayPlayers.TryGetValue(msg.id, out replayPlayer))
            {
                // Create replay player
                User       user  = new ReplayUser(msg);
                PlayerInit pInit = PlayerManager.InitPlayerVariablesFromUserVariables(msg.changedVars);
                GameObject go    = GameManager.Inst.playerManager.CreateRemotePlayerGO(pInit.modelIndex);
                replayPlayer          = new Player(user, go, pInit);
                replayPlayers[msg.id] = replayPlayer;
            }
            replayPlayer.Visible = true;
            HandleUserVariableUpdate(ref msg);
        }
        else
        {
            Player p = GetPlayer(ref msg);
            p.Visible = false;
            //replayPlayers.Remove(msg.id);
        }
        Debug.LogError("HandleUserEnterExit complete");
    }
コード例 #25
0
    // Update is called once per frame
    private void Update()
    {
        _timeSinceLastPub += Time.deltaTime;
        if (_timeSinceLastPub >= 1 / ZmqPubRate)
        {
            var pubMsg   = new Msg();
            var position = _hip.position;
            var velocity = _hip.velocity;
            var msgData  = new MsgData
            {
                Position = new[] { position.x, position.y, position.z },
                Velocity = new[] { velocity.x, velocity.y, velocity.z },
                ID       = id
            };
            var pubMsgPayload = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(msgData));
            pubMsg.InitGC(pubMsgPayload, pubMsgPayload.Length);
            _pub.Send(ref pubMsg, false);
            _timeSinceLastPub = 0;
        }

        //string recvStr;
        if (_sub.TryReceiveFrameString(out recvStr))
        {
            Debug.Log(recvStr);
            var recvJson = JsonConvert.DeserializeObject <Dictionary <string, string> >(recvStr);
            //if (int.Parse(recvJson["ID"]) != id) return;
            var forceX = float.Parse(recvJson["force_x"]);
            var forceY = float.Parse(recvJson["force_y"]);
            var forceZ = float.Parse(recvJson["force_z"]);
            _hip.AddRelativeForce(forceX, forceY, -(forceZ * 2));    //negative z because conversion from right-hand to left-hand coordinates
        }
    }
コード例 #26
0
    void Awake()
    {
        name = photonView.Owner.NickName;
        MessageBroker.Default.Receive <ResData>().Subscribe(x =>
        {
            if (GameConst.ResPlayerRemote == x.Type && x.Data != null && !photonView.IsMine && _remote == null)
            {
                var asset = x.Data.LoadAsset("RemotePlayer");
                asset.SetParent(transform, false);
                _message = new MessageBroker();
                _remote  = asset.GetComponent <RemotePlayer>();
                _remote.Setup(_message, transform.position, transform.rotation);
            }
            if (GameConst.ResPlayerLocal == x.Type && x.Data != null && photonView.IsMine && _local == null)
            {
                var asset = x.Data.LoadAsset("LocalPlayer");
                asset.SetParent(transform, false);
                Setup(asset);
            }
        }).AddTo(this);
        var msg = new MsgData()
        {
            Type = GameConst.MsgEnterGame, Data = photonView.IsMine
        };

        MessageBroker.Default.Publish(msg);
    }
コード例 #27
0
ファイル: MsgControllerTest.cs プロジェクト: rog1039/crux
        public async Task MsgControllerGetAdmin()
        {
            var data  = new MsgApiDataHandler();
            var model = MsgData.GetFirst();

            data.Result.Setup(m => m.Execute(It.IsAny <Loader <Msg> >())).Returns(model);

            var controller = new MsgController(data, Cloud, Logic)
            {
                CurrentUser = AdminUser
            };
            var result = await controller.Get(MsgData.FirstId) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            var viewModel = result.Value as MsgViewModel;

            viewModel.Id.Should().Be(model.Id);
            viewModel.Name.Should().Be(model.Name);
            viewModel.Text.Should().Be(model.Text);

            data.HasExecuted.Should().BeTrue();
            data.Result.Verify(s => s.Execute(It.IsAny <Loader <Msg> >()), Times.Once());
        }
コード例 #28
0
    public int DispatchEvent(MsgData data)
    {
        int iRet = 0;

        if (eventTable.ContainsKey(data.Cmd))
        {
            List <EventHandleMsg> evtList = eventTable[data.Cmd];
            List <EventHandleMsg> clone   = new List <EventHandleMsg>(evtList);
            for (int i = 0; i < clone.Count; i++)
            {
                EventHandleMsg hd = clone[i];
                if (null != hd)
                {
                    hd(data);
                }
            }
        }

        if (key2PackageRegistry.ContainsKey(data.Cmd))
        {
            //如果是关键包,记录后待删除
            RecordReceiveCMD(data.Cmd);
            Pop(data.Cmd);
        }

        //通知停止锁屏
        bool canUnlock = _lockManager.RemovePackageCmd(data.Cmd);

        if (canUnlock)
        {
            EventManager.Send(EventType_Net.EVENT_UNLOCK_SCREEN);
        }
        return(iRet);
    }
コード例 #29
0
ファイル: plcserver.cs プロジェクト: trigrass2/plcserver
        /// <summary>
        /// Invio risposta a messaggi aventi messagedata di tipo <typeparamref name="MsgData"/>
        /// </summary>
        /// <param name="receivedMsg">Messaggio a cui viene inviata risposta</param>
        /// <param name="MsgCode">Codice messaggio di risposta</param>
        /// <param name="MessageData">Dato da inviare (contiene Validation)</param>
        /// <param name="Result">Risultato dell'operazione richiesta</param>
        /// <returns>true se tutto bene, altrimenti false</returns>
        private bool SendResponse(IIncomingMessage receivedMsg, MsgCodes MsgCode, MsgData MessageData, bool Result)
        {
            bool bOK     = true;
            var  message = mdsClient.CreateMessage();

            // Set message data
            MessageData.MsgCode    = MsgCode;
            MessageData.validation = Result;

            // Set message params
            message.MessageData = GeneralHelper.SerializeObject(MessageData);
            message.DestinationApplicationName = receivedMsg.SourceApplicationName;
            message.TransmitRule = MessageTransmitRules.NonPersistent;


            try
            {
                //Send message
                message.Send();
                Logger.InfoFormat("Inviato msg a {0}", message.DestinationApplicationName);
            }
            catch (Exception exc)
            {
                // non sono riuscito a inviare il messaggio
                Logger.WarnFormat("Messaggio non inviato - {0}", exc.Message);
                bOK = false;
            }

            return(bOK);
        }
コード例 #30
0
        public virtual async Task <bool> Evaluate(MsgData message)
        {
            bool b = message.Message.ToLower().Contains(command.ToLower());
            await Task.CompletedTask;

            return(b);
        }
コード例 #31
0
        static void Main(string[] args)
        {
            Counter counter1 = new Counter();
            Counter counter2 = new Counter();

            Dispatcher.Instance.Register("counter1", counter1);
            Dispatcher.Instance.Register("counter2", counter2);

            for (int i = 0; i < 10000; i++)
            {
                MsgData data1 = new MsgData(i.ToString());

                Dispatcher.Instance.Send(data1, "counter2");
            }

            for (int i = 0; i < 10000; i++)
            {
                MsgData data2 = new MsgData("=========");

                Dispatcher.Instance.Send(data2, "counter1");
            }


            MsgData data = new MsgData("stop");

            Dispatcher.Instance.Send(data, "counter1");

            Dispatcher.Instance.Send(data, "counter2");

            Console.ReadLine();
        }
コード例 #32
0
        public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
        {
            if (syncContext == null) return nextSink.AsyncProcessMessage (msg, replySink);

            MsgData md = new MsgData ();
            md.InMessage = msg;
            md.ReplySink = replySink;
            syncContext.AsyncDispatch (new StatefulMessageHandler (AsyncDispatchMessage), md);
            return null;
        }
コード例 #33
0
        public IMessage SyncProcessMessage (IMessage msg)
		{
			if (syncContext == null) return nextSink.SyncProcessMessage (msg);
			
			IMethodMessage mm = (IMethodMessage)msg;
			
			if ((mm.MethodBase.Name == "FieldGetter" || mm.MethodBase.Name == "FieldSetter") && mm.MethodBase.DeclaringType == typeof(object)) {
				return nextSink.SyncProcessMessage (msg);
			}

			MethodBase mb = GetRealMethod (mm);
			
			if (mb.IsDefined (typeof(FreeDispatchAttribute), true)) {
				return nextSink.SyncProcessMessage (msg);
			}

			if (mb.IsDefined (typeof(AsyncDispatchAttribute), true)) {
				AsyncProcessMessage (msg, DummySink.Instance);
				return new ReturnMessage (null, null, 0, null, (IMethodCallMessage)mm);
			}

			MsgData md = new MsgData ();
			md.InMessage = msg;
			SyncContext oldCtx = SyncContext.GetContext ();
			try {
				SyncContext.SetContext (syncContext);
				syncContext.Dispatch (new StatefulMessageHandler (DispatchMessage), md);
			} finally {
				SyncContext.SetContext (oldCtx);
			}
			
			return md.OutMessage;
		}
コード例 #34
0
        public IMessageCtrl AsyncProcessMessage (IMessage msg, IMessageSink replySink)
		{
			if (syncContext == null) return nextSink.AsyncProcessMessage (msg, replySink);

			// Make a copy of the message since MS.NET seems to free the original message
			// once it has been dispatched.
			if (!isMono)
				msg = new MethodCall (msg);

			MsgData md = new MsgData ();
			md.InMessage = msg;
			md.ReplySink = replySink;
			syncContext.AsyncDispatch (new StatefulMessageHandler (AsyncDispatchMessage), md);
			return null;
		}