Ejemplo n.º 1
0
    void SendData(int cmd, string info, NetCallBack callback)
    {
        if (Checker.SendCheker.ContainsKey((PROTOCOL)cmd))
        {
            ProtocolChecker checker = Checker.SendCheker[(PROTOCOL)cmd];

            callback += (json) => { checker.canSend = true; };

            //< 중복해서 전송이 가능하면 또 전송
            if (checker.canDuplicate)
            {
                netBase.SendData(cmd, info, callback);
            }

            else
            {
                //< 중복이 안된다면 현재 전송이 가능할때만 전송
                if (checker.canSend)
                {
                    netBase.SendData(cmd, info, callback);
                }
            }

            //< 전송 불가능으로 대입
            checker.canSend = false;
        }
    }
        public override void Finalization()
        {
            if (
                //数据段单独存放,因此_componentData的长度为协议结构长度减一
                (_structureComponents.Count + 1 != Protocol.ProtocolStructures.Count) ||
                !ProtocolChecker.CheckProtocol(this) ||
                DataComponent == null ||
                (Command.DataOrderType == DataOrderType.Order && DataComponent.ComponentContent.Length != Command.ReceiveBytesLength)
                )
            {
                Status = PackageStatus.InvalidPackage;
                return;
            }

            Status = PackageStatus.Finalized;

            Finalized = true;
        }