public HostData(Guid guid, IPEndPoint internalIp, IPEndPoint externalIp, NetworkSessionPublicInfo publicInfo)
 {
     Guid        = guid;
     InternalIp  = internalIp;
     ExternalIp  = externalIp;
     PublicInfo  = publicInfo;
     LastUpdated = DateTime.Now;
 }
Example #2
0
 internal static bool ParseRequestHostsResponse(NetIncomingMessage response, out Guid guid, out NetworkSessionPublicInfo publicInfo)
 {
     guid       = Guid.Empty;
     publicInfo = null;
     try
     {
         guid       = new Guid(response.ReadString());
         publicInfo = new NetworkSessionPublicInfo();
         if (!publicInfo.Unpack(response))
         {
             return(false);
         }
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #3
0
 private static void AddAvailableNetworkSession(Guid hostGuid, NetworkSessionPublicInfo publicInfo, IEnumerable <SignedInGamer> localGamers, NetworkSessionType searchType, NetworkSessionProperties searchProperties, IList <AvailableNetworkSession> availableSessions, object tag = null)
 {
     if (searchType == publicInfo.sessionType && searchProperties.SearchMatch(publicInfo.sessionProperties))
     {
         var availableSession = new AvailableNetworkSession(
             hostGuid,
             localGamers,
             publicInfo.maxGamers,
             publicInfo.privateGamerSlots,
             publicInfo.sessionType,
             publicInfo.currentGamerCount,
             publicInfo.hostGamertag,
             publicInfo.openPrivateGamerSlots,
             publicInfo.openPublicGamerSlots,
             publicInfo.sessionProperties)
         {
             Tag = tag,
         };
         availableSessions.Add(availableSession);
     }
 }
Example #4
0
 internal static bool ParseRegisterHost(NetIncomingMessage request, out Guid guid, out IPEndPoint internalIp, out IPEndPoint externalIp, out NetworkSessionPublicInfo publicInfo)
 {
     guid       = Guid.Empty;
     internalIp = null;
     externalIp = null;
     publicInfo = null;
     try
     {
         guid       = new Guid(request.ReadString());
         internalIp = request.ReadIPEndPoint();
         externalIp = request.SenderEndPoint;
         publicInfo = new NetworkSessionPublicInfo();
         if (!publicInfo.Unpack(request))
         {
             return(false);
         }
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #5
0
        internal static void RegisterHost(NetPeer peer, Guid guid, IPEndPoint internalIp, NetworkSessionPublicInfo publicInfo)
        {
            var request = peer.CreateMessage();

            request.Write(NetworkSettings.GameAppId);
            request.Write(NetworkSettings.MasterServerPayload);
            request.Write((byte)MasterServerMessageType.RegisterHost);
            request.Write(guid.ToString());
            request.Write(internalIp);
            publicInfo.Pack(request);
            peer.SendUnconnectedMessage(request, ResolveEndPoint());

            Debug.WriteLine("Registering with master server (Guid: " + guid + ", InternalIp: " + internalIp + ", PublicInfo: ...)");
        }
Example #6
0
        internal static void SendRequestHostsResponse(NetPeer peer, IPEndPoint recipientEndPoint, bool localDiscovery, Guid guid, NetworkSessionPublicInfo publicInfo)
        {
            var response = peer.CreateMessage();

            response.Write((byte)MasterServerMessageType.RequestHosts);
            response.Write((byte)MasterServerMessageResult.Ok);
            response.Write(guid.ToString());
            publicInfo.Pack(response);
            if (localDiscovery)
            {
                peer.SendDiscoveryResponse(response, recipientEndPoint);
            }
            else
            {
                peer.SendUnconnectedMessage(response, recipientEndPoint);
            }
        }