public StreamingClient(TwitterAccount[] accounts, ulong[] friendIDs, IStreamingHandler target, bool dummy) : this(accounts, target, dummy) { StreamingUri = StreamingFilterUri; if (dummy) { return; } ThreadPool.QueueUserWorkItem(delegate(object o) { string[] postDatas = new string[accounts.Length]; for (int j = 0, p = 0; j < accounts.Length; j++, p = Math.Min(friendIDs.Length, p + MaxFollowCount) % friendIDs.Length) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < Math.Min(MaxFollowCount, friendIDs.Length - p); i++) { sb.Append(friendIDs[i + p]); sb.Append(','); } if (sb.Length > 0) { sb.Remove(sb.Length - 1, 1); } _states[j].StreamingPostData = "follow=" + OAuthBase.UrlEncode(sb.ToString()); } StreamingStart(); }); }
public bool Load(ConfigLoadDelegate load, out IStreamingHandler[] targets) { targets = null; if (!File.Exists(ConfigFilePath)) { return(false); } try { JsonObject root = (JsonObject) new JsonValueReader(new StreamReader(ConfigFilePath, System.Text.Encoding.UTF8)).Read(); if (root.Value.ContainsKey("accounts")) { JsonArray array = (JsonArray)root.Value["accounts"]; JsonArray accountsArray = array; TwitterAccount[] accounts = new TwitterAccount[array.Length]; for (int i = 0; i < array.Length; i++) { accounts[i] = LoadAccount((JsonObject)array[i]); } UpdateAccounts(accounts); array = (JsonArray)root.Value["searches"]; SearchStatuses[] searches = new SearchStatuses[array.Length]; for (int i = 0; i < array.Length; i++) { searches[i] = LoadSearch((JsonObject)array[i], accounts); } _searches = searches; if (root.Value.ContainsKey("lists")) { array = (JsonArray)root.Value["lists"]; List <ListStatuses> lists = new List <ListStatuses> (); for (int i = 0; i < array.Length; i++) { ListStatuses ls = LoadList((JsonObject)array[i], accounts); if (ls != null) { lists.Add(ls); } } _lists = lists.ToArray(); } targets = new IStreamingHandler[accountsArray.Length]; for (int i = 0; i < accountsArray.Length; i++) { targets[i] = LoadStreamingTarget((JsonObject)accountsArray[i], accounts, _searches, _lists); } ReconstructAllStreaming(targets, true); } load(root); return(true); } catch { return(false); } }
public StreamingClient(TwitterAccount account, IStreamingHandler target, bool dummy) : this(new TwitterAccount[]{account}, target, dummy) { if (dummy) return; ThreadPool.QueueUserWorkItem (delegate (object o) { _states[0].StreamingUri = UserStreamingURL; _states[0].HttpMethod = "GET"; _states[0].StreamingPostData = null; StreamingStart (); }); }
public void ReconstructAllStreaming(IStreamingHandler[] targets, bool dummy) { if (Accounts.Length != targets.Length) { throw new ArgumentException(); } CloseAllStreaming(); Dictionary <IStreamingHandler, List <TwitterAccount> > dic = new Dictionary <IStreamingHandler, List <TwitterAccount> > (); for (int i = 0; i < Accounts.Length; i++) { IStreamingHandler h = targets[i]; if (h == null) { continue; } List <TwitterAccount> list; if (!dic.TryGetValue(h, out list)) { list = new List <TwitterAccount> (); dic.Add(h, list); } list.Add(Accounts[i]); } foreach (KeyValuePair <IStreamingHandler, List <TwitterAccount> > pair in dic) { TwitterAccount homeTarget = pair.Key as TwitterAccount; SearchStatuses searchTarget = pair.Key as SearchStatuses; ListStatuses listTarget = pair.Key as ListStatuses; if (homeTarget != null) { /*ulong[] ids; * try { * ids = dummy ? null : homeTarget.TwitterClient.FriendIDs; * } catch { * continue; * } * new StreamingClient (pair.Value.ToArray (), ids, homeTarget, dummy);*/ new StreamingClient(homeTarget, homeTarget, dummy); } else if (searchTarget != null) { searchTarget.StreamingClient = new StreamingClient(pair.Value.ToArray(), searchTarget.Keyword, searchTarget, dummy); } else if (listTarget != null) { listTarget.StreamingClient = new StreamingClient(pair.Value.ToArray(), listTarget.Account, listTarget.List, listTarget, dummy); } } }
public StreamingClient(TwitterAccount account, IStreamingHandler target, bool dummy) : this(new TwitterAccount[] { account }, target, dummy) { if (dummy) { return; } ThreadPool.QueueUserWorkItem(delegate(object o) { _states[0].StreamingUri = UserStreamingURL; _states[0].HttpMethod = "GET"; _states[0].StreamingPostData = null; StreamingStart(); }); }
public Server(string ip, int port, INetworkingClientPool networkingClientPool, IAuthenticationProviderFactory authenticationProviderFactory, IEntityStreamer streamer, IStreamingHandlerFactory factory) { var webSocket = new WebSocket(); var authenticationProvider = authenticationProviderFactory.Create(ip, port, webSocket); var streamingHandler = factory.Create(networkingClientPool, authenticationProvider); StreamingHandler = streamingHandler; webSocket.OnMessageReceived = streamingHandler.OnMessage; webSocket.OnError = authenticationProvider.OnError; webSocket.OnConnectionEstablished = authenticationProvider.OnConnectionEstablished; webSocket.OnConnectionBroken = authenticationProvider.OnConnectionBroken; webSocket.StartListen(port); }
public StreamingClient(TwitterAccount[] accounts, string searchKeywords, IStreamingHandler target, bool dummy) : this(accounts, target, dummy) { StreamingUri = StreamingFilterUri; string postData = "track=" + OAuthBase.UrlEncode(searchKeywords); for (int i = 0; i < accounts.Length; i++) { _states[i].StreamingPostData = postData; } SearchKeywords = searchKeywords; if (!dummy) { StreamingStart(); } }
StreamingClient(TwitterAccount[] accounts, IStreamingHandler target, bool dummy) { Accounts = new TwitterAccount[accounts.Length]; _states = new InternalState[accounts.Length]; for (int i = 0; i < accounts.Length; i++) { Accounts[i] = accounts[i]; Accounts[i].StreamingClient = this; _states[i] = new InternalState(accounts[i]); if (dummy) { _states[i].ConnectionState = StreamingState.UpdatingFriendList; } } SearchKeywords = string.Empty; Target = target; }
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBox cb = sender as ComboBox; IStreamingHandler selected = cb.SelectedItem as IStreamingHandler; if (cb.SelectedItem != null && selected == null) { cb.SelectedItem = null; } for (int i = 0; i < _accounts.Length; i++) { if (_accounts[i] == cb.DataContext) { _targets[i] = selected; return; } } }
public StreamingClient(TwitterAccount[] accounts, ulong[] friendIDs, IStreamingHandler target, bool dummy) : this(accounts, target, dummy) { StreamingUri = StreamingFilterUri; if (dummy) return; ThreadPool.QueueUserWorkItem (delegate (object o) { string[] postDatas = new string[accounts.Length]; for (int j = 0, p = 0; j < accounts.Length; j++, p = Math.Min (friendIDs.Length, p + MaxFollowCount) % friendIDs.Length) { StringBuilder sb = new StringBuilder (); for (int i = 0; i < Math.Min (MaxFollowCount, friendIDs.Length - p); i++) { sb.Append (friendIDs[i + p]); sb.Append (','); } if (sb.Length > 0) sb.Remove (sb.Length - 1, 1); _states[j].StreamingPostData = "follow=" + OAuthBase.UrlEncode (sb.ToString ()); } StreamingStart (); }); }
void InitStreaming(IStreamingHandler[] targets) { if (targets == null) return; TwitterAccount[] accounts = _mgr.Accounts; ManualResetEvent[] waits = new ManualResetEvent[accounts.Length]; for (int i = 0; i < accounts.Length; i++) { waits[i] = new ManualResetEvent (false); ThreadPool.QueueUserWorkItem (delegate (object o1) { object[] ary = (object[])o1; try { (ary[0] as TwitterAccount).TwitterClient.UpdateFriendIDs (); } catch {} (ary[1] as ManualResetEvent).Set (); }, new object[] {accounts[i], waits[i]}); } for (int i = 0; i < waits.Length; i ++) waits[i].WaitOne (); _mgr.ReconstructAllStreaming (targets, false); Dispatcher.Invoke (new EmptyDelegate (delegate () { foreach (TimelineInfo info in GetAllTimeLineInfo ()) info.UpdateStreamingConstruction (); })); }
public void Dispose() { lock (this) { if (!_active) return; _active = false; } Target = null; for (int i = 0; i < _states.Length; i ++) { if (_states[i].Handle != null) { ThreadPool.QueueUserWorkItem (delegate (object o) { try { (o as IDisposable).Dispose (); } catch {} }, _states[i].Handle); } if (Accounts[i].StreamingClient == this) Accounts[i].StreamingClient = null; } }
StreamingClient(TwitterAccount[] accounts, IStreamingHandler target, bool dummy) { Accounts = new TwitterAccount[accounts.Length]; _states = new InternalState[accounts.Length]; for (int i = 0; i < accounts.Length; i ++) { Accounts[i] = accounts[i]; Accounts[i].StreamingClient = this; _states[i] = new InternalState (accounts[i]); if (dummy) _states[i].ConnectionState = StreamingState.UpdatingFriendList; } SearchKeywords = string.Empty; Target = target; }
public StreamingClient(TwitterAccount[] accounts, string searchKeywords, IStreamingHandler target, bool dummy) : this(accounts, target, dummy) { StreamingUri = StreamingFilterUri; string postData = "track=" + OAuthBase.UrlEncode (searchKeywords); for (int i = 0; i < accounts.Length; i ++) _states[i].StreamingPostData = postData; SearchKeywords = searchKeywords; if (!dummy) StreamingStart (); }
void Init(IStreamingHandler[] targets) { InitThreadPoolSetting (); ThreadPool.QueueUserWorkItem (delegate (object o) { InitUserInfo (); InitStreaming (targets); InitUserFollowers (); }); }
public bool Load(ConfigLoadDelegate load, out IStreamingHandler[] targets) { targets = null; if (!File.Exists (ConfigFilePath)) return false; try { JsonObject root = (JsonObject)new JsonValueReader (new StreamReader (ConfigFilePath, System.Text.Encoding.UTF8)).Read (); if (root.Value.ContainsKey ("accounts")) { JsonArray array = (JsonArray)root.Value["accounts"]; JsonArray accountsArray = array; TwitterAccount[] accounts = new TwitterAccount[array.Length]; for (int i = 0; i < array.Length; i++) accounts[i] = LoadAccount ((JsonObject)array[i]); UpdateAccounts (accounts); array = (JsonArray)root.Value["searches"]; SearchStatuses[] searches = new SearchStatuses[array.Length]; for (int i = 0; i < array.Length; i ++) searches[i] = LoadSearch ((JsonObject)array[i], accounts); _searches = searches; if (root.Value.ContainsKey ("lists")) { array = (JsonArray)root.Value["lists"]; List<ListStatuses> lists = new List<ListStatuses> (); for (int i = 0; i < array.Length; i++) { ListStatuses ls = LoadList ((JsonObject)array[i], accounts); if (ls != null) lists.Add (ls); } _lists = lists.ToArray (); } targets = new IStreamingHandler[accountsArray.Length]; for (int i = 0; i < accountsArray.Length; i ++) targets[i] = LoadStreamingTarget ((JsonObject)accountsArray[i], accounts, _searches, _lists); ReconstructAllStreaming (targets, true); } load (root); return true; } catch { return false; } }
public void ReconstructAllStreaming(IStreamingHandler[] targets, bool dummy) { if (Accounts.Length != targets.Length) throw new ArgumentException (); CloseAllStreaming (); Dictionary<IStreamingHandler, List<TwitterAccount>> dic = new Dictionary<IStreamingHandler, List<TwitterAccount>> (); for (int i = 0; i < Accounts.Length; i++) { IStreamingHandler h = targets[i]; if (h == null) continue; List<TwitterAccount> list; if (!dic.TryGetValue (h, out list)) { list = new List<TwitterAccount> (); dic.Add (h, list); } list.Add (Accounts[i]); } foreach (KeyValuePair<IStreamingHandler, List<TwitterAccount>> pair in dic) { TwitterAccount homeTarget = pair.Key as TwitterAccount; SearchStatuses searchTarget = pair.Key as SearchStatuses; ListStatuses listTarget = pair.Key as ListStatuses; if (homeTarget != null) { /*ulong[] ids; try { ids = dummy ? null : homeTarget.TwitterClient.FriendIDs; } catch { continue; } new StreamingClient (pair.Value.ToArray (), ids, homeTarget, dummy);*/ new StreamingClient (homeTarget, homeTarget, dummy); } else if (searchTarget != null) { searchTarget.StreamingClient = new StreamingClient (pair.Value.ToArray (), searchTarget.Keyword, searchTarget, dummy); } else if (listTarget != null) { listTarget.StreamingClient = new StreamingClient (pair.Value.ToArray (), listTarget.Account, listTarget.List, listTarget, dummy); } } }