static ReqrepManager() { SenderFactory.Register("replystate", LookupReplyStateByUri); _inst_tab_sync = new object(); lock (_inst_tab_sync) { _instance_table = new WeakValueTable <string, ReqrepManager>(); } }
static ReqrepManager() { SenderFactory.Register("replystate", LookupReplyStateByUri); _inst_tab_sync = new object(); lock (_inst_tab_sync) { _instance_table = new Dictionary <object, ReqrepManager>(); } }
public System.String ToUri() { var kv = new SCG.Dictionary <string, string>(); kv["wrap"] = _wrapped_sender.ToUri(); kv["max"] = MAX_PAYLOAD_SIZE.ToString(); return(SenderFactory.EncodeUri("frag", kv)); }
public void EqTest() { var fp = FragPipe.Instance; //Get some sender var fs1 = new FragmentingSender(100, fp); var fs2 = new FragmentingSender(100, fp); Assert.AreEqual(fs1, fs2); Assert.AreEqual(fs1.GetHashCode(), fs2.GetHashCode()); //urlencode sender:pipe Assert.AreEqual(fs1.ToUri(), "sender:frag?max=100&wrap=sender%3apipe"); Assert.AreEqual(fs1, SenderFactory.CreateInstance(null, fs1.ToUri()), "uri RT"); }
public string ToUri() { string uri; if (_uri.TryGet(out uri) == false) { Dictionary <string, string> kvpairs = new Dictionary <string, string>(); kvpairs["id"] = LocalID.ToString(); kvpairs["retpath"] = RequestKey.Sender.ToUri(); uri = SenderFactory.EncodeUri("replystate", kvpairs); _uri.TrySet(uri); } return(uri); }
public static ReplyState LookupReplyStateByUri(object ctx, string uri) { ReqrepManager rrm = _instance_table[ctx]; string scheme; IDictionary <string, string> kvpairs = SenderFactory.DecodeUri(uri, out scheme); int id = Int32.Parse(kvpairs["id"]); ReplyState rs; if (rrm._reply_id_table.TryGet(id, out rs)) { return(rs); } else { throw new Exception(String.Format("Invalid id: {0}", id)); } }
public static ISender CreateInstance(object ctx, string uri) { string scheme; var kv = SenderFactory.DecodeUri(uri, out scheme); if (scheme.Equals("frag")) { int max = System.Int32.Parse(kv["max"]); string wuri = kv["wrap"]; ISender wrapped = SenderFactory.CreateInstance(ctx, wuri); return(new FragmentingSender(max, wrapped)); } else { throw new System.Exception("Unrecognized scheme: " + scheme); } }
static FragmentingSender() { SenderFactory.Register("frag", CreateInstance); }
static FragPipe() { SenderFactory.Register("pipe", delegate(object o, string uri) { return (Instance); }); }