private static void JoinAsyncClear() { joinAsync = null; joinAsyncFunction = null; joinAsyncCallback = null; }
/// <summary> /// Attempts to join a session asynchronously. /// </summary> /// <param name="session">The AvailableSession to join.</param> /// <param name="initializeFunction">The optional function to call to initialize the session.</param> public static void JoinSessionAsync(AvailableSession session, ActiveSession.ActiveSessionDelegate initializeFunction, Action<bool> callback) { if (IsLocked) { if (callback != null) callback(false); return; } #if DEBUG Log.Trace(String.Format("Joining session hosted by {0}...", session.HostName), 2.0f); #endif joinAsyncFunction = initializeFunction; joinAsyncCallback = callback; try { joinAsync = NetworkSession.BeginJoin(session.NativeSession, JoinAsyncFinished, null); } catch (Exception e) { ReportError(e.Message); if (joinAsyncCallback != null) joinAsyncCallback(false); JoinAsyncClear(); } }
private static void CreateAsyncClear() { createAsync = null; createAsyncFunction = null; createAsyncCallback = null; createAsyncAllowHostMigration = false; }
/// <summary> /// Creates a session with the given parameters asynchronously. /// </summary> /// <param name="maxGamers">Maximum number of gamers allowed.</param> /// <param name="allowHostMigration">If host migration is allowed.</param> /// <param name="properties">Properties to initialize the session with.</param> /// <param name="initializeFunction">The optional function to call to initialize the session.</param> public static void CreateSessionAsync(int maxGamers, bool allowHostMigration, NetworkSessionProperties properties, ActiveSession.ActiveSessionDelegate initializeFunction, Action<bool> callback) { if (IsLocked) { if (callback != null) callback(false); return; } #if DEBUG Log.Trace("Creating session...", 2.0f); #endif createAsyncAllowHostMigration = allowHostMigration; createAsyncFunction = initializeFunction; createAsyncCallback = callback; try { createAsync = NetworkSession.BeginCreate(NetworkSessionType.SystemLink, MaxLocalGamers, maxGamers, 0, properties, CreateAsyncFinished, null); } catch (Exception e) { ReportError(e.Message); if ( createAsyncCallback != null ) createAsyncCallback(false); CreateAsyncClear(); } }