public void UnsubscribeFromVote <T, C>(string queryName, QueryDelegate <Vote <T>, C> answer) { QueryKey key = new QueryKey(queryName, typeof(T)); if (!voteListeners.ContainsKey(key)) { voteListeners.Add(key, new Dictionary <int, VoteQueryDelegateWrapper>()); } int answerHash = answer.GetHashCode(); if (voteListeners[key].ContainsKey(answerHash)) { voteListeners[key].Remove(answerHash); } }
public void UnsubscribeFromBool <C>(string queryName, QueryDelegate <BoolResult, C> answer) { QueryKey key = new QueryKey(queryName, typeof(BoolResult)); if (!boolListeners.ContainsKey(key)) { boolListeners.Add(key, new Dictionary <int, QueryDelegateWrapper>()); } int answerHash = answer.GetHashCode(); if (boolListeners[key].ContainsKey(answerHash)) { boolListeners[key].Remove(answerHash); } }
public void UnsubscribeFromSum <T, C>(string queryName, QueryDelegate <T, C> answer) where T : struct { QueryKey key = new QueryKey(queryName, typeof(T)); if (!numberListeners.ContainsKey(key)) { numberListeners.Add(key, new Dictionary <int, QueryDelegateWrapper>()); } int answerHash = answer.GetHashCode(); if (numberListeners[key].ContainsKey(answerHash)) { numberListeners[key].Remove(answerHash); } }
public void SubscribeToBool <C>(string queryName, QueryDelegate <BoolResult, C> answer) { QueryKey key = new QueryKey(queryName, typeof(BoolResult)); if (!boolListeners.ContainsKey(key)) { boolListeners.Add(key, new Dictionary <int, QueryDelegateWrapper>()); } int answerHash = answer.GetHashCode(); if (!boolListeners[key].ContainsKey(answerHash)) { QueryDelegateWrapper wrappedAnswer = (object context) => { return(answer((C)context)); }; boolListeners[key].Add(answerHash, wrappedAnswer); } }
public void SubscribeToSum <T, C>(string queryName, QueryDelegate <T, C> answer) where T : struct { QueryKey key = new QueryKey(queryName, typeof(T)); if (!numberListeners.ContainsKey(key)) { numberListeners.Add(key, new Dictionary <int, QueryDelegateWrapper>()); } int answerHash = answer.GetHashCode(); if (!numberListeners[key].ContainsKey(answerHash)) { QueryDelegateWrapper wrappedAnswer = (object context) => { return(answer((C)context)); }; numberListeners[key].Add(answerHash, wrappedAnswer); } }
public void SubscribeToVote <T, C>(string queryName, QueryDelegate <Vote <T>, C> answer) { QueryKey key = new QueryKey(queryName, typeof(T)); if (!voteListeners.ContainsKey(key)) { voteListeners.Add(key, new Dictionary <int, VoteQueryDelegateWrapper>()); } int answerHash = answer.GetHashCode(); if (!voteListeners[key].ContainsKey(answerHash)) { VoteQueryDelegateWrapper wrappedAnswer = (object context) => { Vote <T> answerVote = answer((C)context); return(new Vote <object>(answerVote.isApplicable, answerVote.candidate, answerVote.weight)); }; voteListeners[key].Add(answerHash, wrappedAnswer); } }