Example #1
0
        /// <summary>
        /// constructor of IMForm
        /// </summary>
        public IMForm(SDCSCommon.Network.BuddyListData bld)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //

            buddyData = bld;
        }
Example #2
0
        /// <summary>
        /// When a user state changes call this function to notify all the relevant clients
        /// </summary>
        /// <param name="userID">ID of the user who's state has changed</param>
        /// <param name="username">The username of the user who's state has changed</param>
        /// <param name="state">The new state of the user</param>
        public static void notifyBuddyStatus(int userID, string username, SDCSCommon.Network.UserState state)
        {
            SDCSCommon.Network.BuddyListData bld = new SDCSCommon.Network.BuddyListData();
            bld.userID = userID;
            bld.username = username;
            bld.userState = state;

            lock (buddyStates.SyncRoot)
            {
                if (buddyStates.Contains(userID))
                    buddyStates.Remove(userID);
                buddyStates.Add(userID, bld);
            }

            lock (netStreams.SyncRoot)
                for (int i = 0; i < netStreams.Count; i++)
                    lock (((connection)netStreams[i]).watchingClass.BuddyListData.SyncRoot)
                        ((connection)netStreams[i]).watchingClass.BuddyListData.Add(bld);
        }
Example #3
0
        /// <summary>
        /// Connects to the database at the default location. Only call this function once.
        /// </summary>
        /// <returns>True if loading is successful. False if the database is already loaded or loading failed.</returns>
        public static bool loadDatabase()
        {
            if (databaseLoaded)
                return false;
            database = new UserDatabase();
            try
            {
                // Some last minute configuring that can't be done in the designer
                database.Users.UserIDColumn.AutoIncrement = true;
                database.Users.UserIDColumn.AllowDBNull = false;
                database.Users.UserIDColumn.Unique = true;
                database.UserData.UsernameColumn.Unique = true;
                database.Users.UserIDColumn.AllowDBNull = false;

                saveTimer.AutoReset = true;
                saveTimer.Interval = 600000;
                saveTimer.Elapsed +=new ElapsedEventHandler(saveTimer_Elapsed);
                saveTimer.Start();
            }
            catch
            {
                DatabaseLoaded = false;
                return false;
            }

            try
            {
                database.ReadXml("userDatabase.xml");
            }
            catch
            {}

            DatabaseLoaded = true;

            foreach (UserDatabase.UserDataRow dat in database.UserData.Rows)
            {
                SDCSCommon.Network.BuddyListData bld = new SDCSCommon.Network.BuddyListData();
                bld.userID = dat.UserID;
                bld.username = dat.Username;
                bld.userState = SDCSCommon.Network.UserState.Offline;

                lock (ServerNetwork.buddyStates.SyncRoot)
                    ServerNetwork.buddyStates.Add(dat.UserID, bld);
            }

            return true;
        }