public override void Execute() { //step1. Concret receiver registry information this.ReceiverTable.Receivers = getReceiverRegistryInfo(); //step2. Concret receiver bool keyExist = this.DataConnection.KeyExist(KeyName.ReceiverReply); if (keyExist) { this.ReceiverTable.Receivers = getFullReceiverInfo(this.ReceiverTable.Receivers); } //step3. Subscribe Channel this._ctx.MsgConnection.SubscribeMessage <ReceiverRecord>(ChannelName.ReceiverRegistry, rcd => { ReceiverRecord target = this.ReceiverTable.Receivers.FirstOrDefault(o => o.ReceiverNodeId == rcd.ReceiverNodeId); if (target == null) { this.ReceiverTable.Receivers.Add( new ReceiverRecord { ReceiverId = rcd.ReceiverId, ReceiverNodeId = rcd.ReceiverNodeId, UnReplyCounter = 0 }); } else { target.ReceiverId = rcd.ReceiverId; } }); }
public void registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { Hashtable var3 = this.mReceivers; lock (this.mReceivers) { ReceiverRecord entry = new ReceiverRecord(filter, receiver); var filters = this.mReceivers[receiver]; if (filters == null) { filters = new List <IntentFilter>(); this.mReceivers[receiver] = filters; } filters.Add(filter); for (int i = 0; i < filter.CountActions(); ++i) { string action = filter.GetAction(i); var entries = this.mActions[action]; if (entries == null) { entries = new List <ReceiverRecord>(); this.mActions[action] = entries; } entries.Add(entry); } } }
public void Should_HasOneReceiverRecord_When_OneReceiverHasRegistered() { //Arrange string receiverId = Guid.NewGuid().ToString(); ReceiverRecord expect = new ReceiverRecord { ReceiverId = receiverId, ReceiverNodeId = 0, UnReplyCounter = 0 }, actual = null; _ctx.DataConnection.KeyExist(KeyName.ReceiverRegistry).Returns <bool>(true); _ctx.DataConnection.GetHashTable <int>(KeyName.ReceiverRegistry) .Returns <IDictionary <string, int> >(new Dictionary <string, int> { { receiverId, 0 } }); _ctx.DataConnection.KeyExist(KeyName.ReceiverReply).Returns <bool>(true); _ctx.DataConnection.GetHashTable <int>(KeyName.ReceiverReply) .Returns <IDictionary <string, int> >(new Dictionary <string, int> { { "0", 0 } }); //Act this._ctx.Initial(); actual = this._ctx.ReceiverTable.Receivers.ElementAt(0); //Assert actual.Should().NotBeNull().And.Be(expect); }
public override void Execute() { ReceiverRecord target = this.ReceiverTable.Receivers.FirstOrDefault( o => o.ReceiverNodeId.Equals(this.ReceiverTable.CandidateInfo[this.LogType])); string receiverId = target == null ? string.Empty : target.ReceiverId; //step1. Save data this.DataConnection.Save <T>(this.DataKey, this.DataValue); this.DataConnection.SetHashTable_Plus(KeyName.ReceiverReply, target.ReceiverNodeId.ToString()); }
public bool sendBroadcast(Intent intent) { Hashtable var2 = this.mReceivers; lock (this.mReceivers) { string action = intent.Action; string type = intent.ResolveTypeIfNeeded(this.mAppContext.ContentResolver); Uri data = intent.Data; string scheme = intent.Scheme; ISet <object> categories = intent.Categories; bool debug = (intent.Flags & 8) != 0; if (debug) { Logger.v("LocalBroadcastManager", "Resolving type " + type + " scheme " + scheme + " of intent " + intent); } var entries = this.mActions[intent.Action]; if (entries != null) { if (debug) { Logger.v("LocalBroadcastManager", "Action list: " + entries); } List <object> receivers = null; int i; for (i = 0; i < entries.Count; ++i) { ReceiverRecord receiver = (ReceiverRecord)entries[i]; if (debug) { Logger.v("LocalBroadcastManager", "Matching against filter " + receiver.filter); } if (receiver.broadcasting) { if (debug) { Logger.v("LocalBroadcastManager", " Filter\'s target already added"); } } else { int match = receiver.filter.Match(action, type, scheme, data, categories, "LocalBroadcastManager"); if (match >= 0) { if (debug) { Logger.v("LocalBroadcastManager", " Filter matched! match=0x" + match.ToString("x")); } if (receivers == null) { receivers = new List <object>(); } receivers.Add(receiver); receiver.broadcasting = true; } else if (debug) { string reason; switch (match) { case -4: reason = "category"; break; case -3: reason = "action"; break; case -2: reason = "data"; break; case -1: reason = "type"; break; default: reason = "unknown reason"; break; } Logger.v("LocalBroadcastManager", " Filter did not match: " + reason); } } } if (receivers != null) { for (i = 0; i < receivers.Count; ++i) { ((ReceiverRecord)receivers[i]).broadcasting = false; } this.mPendingBroadcasts.Add(new BroadcastRecord(intent, receivers)); if (!this.mHandler.HasMessages(1)) { this.mHandler.SendEmptyMessage(1); } return(true); } } return(false); } }