public HostData(Guid guid, IPEndPoint internalIp, IPEndPoint externalIp, NetworkSessionPublicInfo publicInfo) { Guid = guid; InternalIp = internalIp; ExternalIp = externalIp; PublicInfo = publicInfo; LastUpdated = DateTime.Now; }
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); }
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); } }
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); }
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: ...)"); }
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); } }