Exemple #1
0
 public void Set(SHeaderSc Obj_)
 {
     Proto = Obj_.Proto;
 }
Exemple #2
0
            void _RecvCallback(CKey Key_, CStream Stream_)
            {
                var Proto = new SHeaderSc();

                Stream_.Pop(Proto);

                var itPeerNet = _PeersNet.Get((Int32)Key_.PeerNum);

                if (!itPeerNet.Data.ExtKey)
                {
                    return;
                }

                var itPeerExt = _PeersExt.Get((Int32)itPeerNet.Data.ExtKey.PeerNum);

                if (!itPeerExt)
                {
                    return;
                }

                if (itPeerExt.Data.itPeerWillExpire) // Not Linked Peer
                {
                    switch (Proto.Proto)
                    {
                    case EProtoSc.Link:
                        _RecvLink(itPeerNet, itPeerExt, Stream_);
                        break;

                    case EProtoSc.ReLink:
                        _RecvReLink(Key_, itPeerNet, itPeerExt, Stream_);
                        break;

                    case EProtoSc.UnLink:
                        _RecvUnLink(Key_, Stream_);
                        break;

                    default:
                        _Net.Close(Key_.PeerNum);
                        break;
                    }
                }
                else // Linked Peer
                {
                    switch (Proto.Proto)
                    {
                    case EProtoSc.UnLink:
                        _RecvUnLink(Key_, Stream_);
                        break;

                    case EProtoSc.Ack:
                        _RecvAck(itPeerExt);
                        break;

                    case EProtoSc.ReSend:
                        Stream_.Pop(sizeof(Int32));
                        goto case EProtoSc.UserProto;

                    case EProtoSc.UserProto:
                        _RecvUserProto(itPeerExt, Stream_);
                        break;

                    default:
                        _UnLink(itPeerExt, ENetRet.InvalidPacket);     // 인증된 클라이언트가 잘못된 프로토콜을 보내면 접속해제 절차 없이 삭제
                        _Net.Close(Key_.PeerNum);
                        break;
                    }
                }
            }
Exemple #3
0
 public SHeaderSc(SHeaderSc Obj_)
 {
     Proto = Obj_.Proto;
 }