// TwitterFactory.cs created with MonoDevelop // User: raul@bgta.net at 23:07 25/05/2008 // using System; using System.Web; using System.Net; using gTwitter.Core.Serialization; using System.Collections; namespace gTwitter.Core { /// /// Twitter Factory Class /// public class TwitterFactory : IDisposable { #region "Private variables" private TwitterSettings _settings = new TwitterSettings(); private ArrayList _sessions = new ArrayList(); private bool Disposed = false; #endregion #region "Public properties" /// /// Twitter Factory Settings /// public TwitterSettings Settings { get { return _settings; } set { _settings = value; } } #endregion /// /// Constructor /// public TwitterFactory() { } /// /// Constructor /// /// /// A . Twitter username. /// /// /// A . Twitter password. /// public TwitterFactory(string username, string password) { this.Settings.Username = username; this.Settings.Password = password; } #region "Events" /// /// Raised on Dispose /// public event EventHandler OnDispose; internal virtual void OnSessionClosed(TwitterSession session, EventArgs e) { _sessions.Remove(session); } #endregion #region "IDisposable" /// /// Automatcly called when object is Disposed. /// /// public void Dispose() { if(!this.Disposed) { foreach(TwitterSession session in _sessions) { session.Dispose(); } _sessions.Clear(); _settings = null; } this.Disposed = true; this.OnDispose(this, new EventArgs()); } #endregion /// /// Open a new Twitter Session using the current Settings /// /// /// A Twitter Session. /// public TwitterSession OpenSession() { TwitterSession session = new TwitterSession(this); _sessions.Add(session); session.OnDispose += this.OnSessionClosed; return session; } } }