Exemple #1
0
            void _RecvReLink(CKey NetKey_, _TPeersNetIt itPeerNet_, _TPeersExtIt itPeerExt_, CStream Stream_)
            {
                var Proto = new SReLinkSc();

                Stream_.Pop(Proto);

                _PeersWillExpire.Remove(itPeerExt_.Data.itPeerWillExpire);
                itPeerExt_.Data.itPeerWillExpire = _PeersWillExpire.End();

                TProtoSeq MustDeleteCnt = (Proto.ServerProtoSeqMustRecv - itPeerExt_.Data.ProtoSeqFirstForSendProtos); // 0 이상의 값이 나와야 함.(조작에의해 음수(큰 양수)가 나오더라도 상관없음

                for (var it = itPeerExt_.Data.SendProtos.Begin(); it;)
                {
                    if (MustDeleteCnt == 0)
                    {
                        break;
                    }

                    var itCheck = it;
                    it.MoveNext();

                    itCheck.Data.Clear();
                    itPeerExt_.Data.SendProtos.Remove(itCheck);
                    --MustDeleteCnt;
                }
                itPeerExt_.Data.ProtoSeqFirstForSendProtos = Proto.ServerProtoSeqMustRecv;

                foreach (var i in itPeerExt_.Data.SendProtos)
                {
                    _Net.Send(NetKey_, new SHeaderCs(EProtoCs.ReSend), i);
                }

                _LinkFuncSoft(itPeerExt_.Data.Key, itPeerExt_.Data.NamePort);
            }
Exemple #2
0
 public void Set(SReLinkSc Obj_)
 {
     ServerProtoSeqMustRecv = Obj_.ServerProtoSeqMustRecv;
 }
Exemple #3
0
 public SReLinkSc(SReLinkSc Obj_)
 {
     ServerProtoSeqMustRecv = Obj_.ServerProtoSeqMustRecv;
 }