예제 #1
0
    private void receiveData(byte[] data)
    {
        root_proto proto = new root_proto();

        proto = Deserialize(root_proto.Parser, data) as root_proto;
        Debug.Log("Client.receiveData messageName = " + proto.MessageName);
        //校正服务器时间
        Function.SetServerTime((long)proto.ServerTime);
        //数据
        byte[] byteData = proto.MessageData.ToByteArray();
        //取消菊花
        if (0 != proto.MessageID && true == RequestLoadDict[proto.MessageID])
        {
            //0是推送协议
            LoadLayerManager.Instance.RemoveLoad();
        }
        RequestLoadDict.Remove(proto.MessageID);

        //事件
        UserEventManager.TriggerEvent(proto.MessageName, byteData);

        //激活回调函数
        if (CallbackDict.ContainsKey(proto.MessageID))
        {
            try
            {
                RequestCallback callback = CallbackDict[proto.MessageID];
                if (null != callback)
                {
                    callback(byteData);
                }
                CallbackDict.Remove(proto.MessageID);
            }
            catch (Exception e)
            {
                Debug.LogError(e);
            }
        }
    }
예제 #2
0
    public void Request(IMessage msg, RequestCallback callback = null, bool needLoad = true)
    {
        root_proto proto = new root_proto();

        //序列化
        byte[] data = Serialize(msg);
        proto.ConnectID   = connectID;
        proto.MessageID   = SendCount++;
        proto.MessageName = msg.GetType().ToString();
        proto.MessageData = ByteString.CopyFrom(data);
        //本地序列化
        byte[] protoByte = Function.Serialization(Serialize(proto));
        //保存回调
        CallbackDict.Add(proto.MessageID, callback);

        //加入发送队列
        SendQueue.Enqueue(protoByte);
        //菊花
        RequestLoadDict.Add(proto.MessageID, needLoad);
        if (true == needLoad)
        {
            LoadLayerManager.Instance.AddLoad();
        }
    }