Пример #1
0
 private static void JoinAsyncClear()
 {
     joinAsync = null;
     joinAsyncFunction = null;
     joinAsyncCallback = null;
 }
Пример #2
0
        /// <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();
            }
        }
Пример #3
0
 private static void CreateAsyncClear()
 {
     createAsync = null;
     createAsyncFunction = null;
     createAsyncCallback = null;
     createAsyncAllowHostMigration = false;
 }
Пример #4
0
        /// <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();
            }
        }