public void RemoveContinuousQueryListener <CQK, CQV>(Event.ContinuousQueryListener <CQK, CQV> cql) { stopAndRemoveTask(cql.clientEventListener.listenerId); VectorByte vc = new VectorByte(cql.clientEventListener.listenerId); cache.removeClientListener(vc); }
public void AddContinuousQueryListener <CQK, CQV>(Event.ContinuousQueryListener <CQK, CQV> cql) { cql.clientEventListener = new ClientListener <CQK, CQV>(); cql.clientEventListener.filterFactoryName = "continuous-query-filter-converter-factory"; cql.clientEventListener.converterFactoryName = "continuous-query-filter-converter-factory"; cql.clientEventListener.useRawData = true; cql.marshaller = this.marshaller; Action <ClientCacheEntryCustomEvent> f = (ClientCacheEntryCustomEvent ev) => { cql.ContinuousQueryListenerFunction(ev); }; cql.clientEventListener.AddListener(f); this.AddClientListener(cql.clientEventListener, new string[] { cql.query }, new string[] { }, null); }
public void ProjectionBasicContQueryTest() { int joined = 0, updated = 0, leaved = 0; object[] uT = null, lT = null; try { IRemoteCache <int, User> userCache = remoteManager.GetCache <int, User>(NAMED_CACHE); userCache.Clear(); Semaphore s = new Semaphore(0, 1); QueryRequest qr = new QueryRequest(); qr.QueryString = "select id, name from sample_bank_account.User"; Event.ContinuousQueryListener <int, object[]> cql = new Event.ContinuousQueryListener <int, object[]>(qr.QueryString); cql.JoiningCallback = (int k, object[] v) => { joined++; }; cql.UpdatedCallback = (int k, object[] v) => { uT = v; updated++; }; cql.LeavingCallback = (int k, object[] v) => { lT = v; leaved++; s.Release(); }; userCache.AddContinuousQueryListener(cql); User u1 = CreateUser1(userCache); User u2 = CreateUser2(userCache); userCache.Put(1, u1); userCache.Put(2, u2); u1.Name = "Jerry"; u1.Surname = "Mouse"; userCache.Put(1, u1); userCache.Remove(2); s.WaitOne(10000); userCache.RemoveContinuousQueryListener(cql); userCache.Clear(); remoteManager.Stop(); } catch (System.Exception ex) { Console.WriteLine(ex.Message); } Assert.AreEqual(2, joined); Assert.AreEqual(1, updated); Assert.AreEqual(1, leaved); Assert.AreEqual(uT, new object[] { 1, "Jerry" }); Assert.AreEqual(lT, new object[] { 2, "Spider" }); }
public void EntityBasicContQueryTest() { int joined = 0, updated = 0, leaved = 0; try { IRemoteCache <int, User> userCache = remoteManager.GetCache <int, User>(NAMED_CACHE); userCache.Clear(); Semaphore s = new Semaphore(0, 1); QueryRequest qr = new QueryRequest(); // JpqlString will be deprecated please use QueryString // qr.JpqlString = "from sample_bank_account.User"; qr.QueryString = "from sample_bank_account.User"; Event.ContinuousQueryListener <int, User> cql = new Event.ContinuousQueryListener <int, User>(qr.QueryString); cql.JoiningCallback = (int k, User v) => { joined++; }; cql.LeavingCallback = (int k, User v) => { leaved++; s.Release(); }; cql.UpdatedCallback = (int k, User v) => { updated++; }; userCache.AddContinuousQueryListener(cql); User u = CreateUser1(userCache); userCache.Put(1, u); u.Name = "Jerry"; u.Surname = "Mouse"; userCache.Put(1, u); userCache.Remove(1); s.WaitOne(10000); userCache.RemoveContinuousQueryListener(cql); userCache.Clear(); } catch (System.Exception ex) { Console.WriteLine(ex.Message); } Assert.AreEqual(1, joined); Assert.AreEqual(1, updated); Assert.AreEqual(1, leaved); }