/// <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; }
/// <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); }
/// <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; }