internal static void batchOneways(Test.MyClassPrx p) { byte[] bs1 = new byte[10 * 1024]; Test.MyClassPrx batch = Test.MyClassPrxHelper.uncheckedCast(p.ice_batchOneway()); batch.ice_flushBatchRequests(); // Empty flush p.opByteSOnewayCallCount(); // Reset the call count for(int i = 0 ; i < 30 ; ++i) { try { batch.opByteSOneway(bs1); test(true); } catch(Ice.MemoryLimitException) { test(false); } } int count = 0; while(count < 27) // 3 * 9 requests auto-flushed. { count += p.opByteSOnewayCallCount(); System.Threading.Thread.Sleep(10); } if(batch.ice_getConnection() != null) { Test.MyClassPrx batch1 = Test.MyClassPrxHelper.uncheckedCast(p.ice_batchOneway()); Test.MyClassPrx batch2 = Test.MyClassPrxHelper.uncheckedCast(p.ice_batchOneway()); batch1.ice_ping(); batch2.ice_ping(); batch1.ice_flushBatchRequests(); batch1.ice_getConnection().close(false); batch1.ice_ping(); batch2.ice_ping(); batch1.ice_getConnection(); batch2.ice_getConnection(); batch1.ice_ping(); batch1.ice_getConnection().close(false); batch1.ice_ping(); batch2.ice_ping(); } Ice.Identity identity = new Ice.Identity(); identity.name = "invalid"; Ice.ObjectPrx batch3 = batch.ice_identity(identity); batch3.ice_ping(); batch3.ice_flushBatchRequests(); // Make sure that a bogus batch request doesn't cause troubles to other ones. batch3.ice_ping(); batch.ice_ping(); batch.ice_flushBatchRequests(); batch.ice_ping(); if(batch.ice_getConnection() != null) { Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = p.ice_getCommunicator().getProperties().ice_clone_(); BatchRequestInterceptorI interceptor = new BatchRequestInterceptorI(); initData.batchRequestInterceptor = interceptor; Ice.Communicator ic = Ice.Util.initialize(initData); batch = Test.MyClassPrxHelper.uncheckedCast(ic.stringToProxy(p.ToString()).ice_batchOneway()); test(interceptor.count() == 0); batch.ice_ping(); batch.ice_ping(); batch.ice_ping(); test(interceptor.count() == 0); interceptor.setEnqueue(true); batch.ice_ping(); batch.ice_ping(); batch.ice_ping(); test(interceptor.count() == 3); batch.ice_flushBatchRequests(); batch.ice_ping(); test(interceptor.count() == 1); batch.opByteSOneway(bs1); test(interceptor.count() == 2); batch.opByteSOneway(bs1); test(interceptor.count() == 3); batch.opByteSOneway(bs1); // This should trigger the flush batch.ice_ping(); test(interceptor.count() == 2); ic.destroy(); } }
internal static void batchOneways(Test.MyClassPrx p) { byte[] bs1 = new byte[10 * 1024]; Test.MyClassPrx batch = Test.MyClassPrxHelper.uncheckedCast(p.ice_batchOneway()); batch.end_ice_flushBatchRequests(batch.begin_ice_flushBatchRequests()); test(batch.begin_ice_flushBatchRequests().isSent()); test(batch.begin_ice_flushBatchRequests().isCompleted_()); test(batch.begin_ice_flushBatchRequests().sentSynchronously()); for(int i = 0 ; i < 30 ; ++i) { batch.begin_opByteSOneway(bs1).whenCompleted( () => { }, (Ice.Exception ex) => { test(false); }); } int count = 0; while(count < 27) // 3 * 9 requests auto-flushed. { count += p.opByteSOnewayCallCount(); System.Threading.Thread.Sleep(10); } if(batch.ice_getConnection() != null) { Test.MyClassPrx batch1 = Test.MyClassPrxHelper.uncheckedCast(p.ice_batchOneway()); Test.MyClassPrx batch2 = Test.MyClassPrxHelper.uncheckedCast(p.ice_batchOneway()); batch1.begin_ice_ping(); batch2.begin_ice_ping(); batch1.end_ice_flushBatchRequests(batch1.begin_ice_flushBatchRequests()); batch1.ice_getConnection().close(false); batch1.begin_ice_ping(); batch2.begin_ice_ping(); batch1.ice_getConnection(); batch2.ice_getConnection(); batch1.begin_ice_ping(); batch1.ice_getConnection().close(false); batch1.begin_ice_ping(); batch2.begin_ice_ping(); } Ice.Identity identity = new Ice.Identity(); identity.name = "invalid"; Ice.ObjectPrx batch3 = batch.ice_identity(identity); batch3.begin_ice_ping(); batch3.end_ice_flushBatchRequests(batch3.begin_ice_flushBatchRequests()); // Make sure that a bogus batch request doesn't cause troubles to other ones. batch3.begin_ice_ping(); batch.begin_ice_ping(); batch.end_ice_flushBatchRequests(batch.begin_ice_flushBatchRequests()); batch.begin_ice_ping(); }
internal static void batchOneways(Test.MyClassPrx p) { byte[] bs1 = new byte[10 * 1024]; byte[] bs2 = new byte[99 * 1024]; try { p.opByteSOneway(bs1); test(true); } catch(Ice.MemoryLimitException) { test(false); } try { p.opByteSOneway(bs2); test(true); } catch(Ice.MemoryLimitException) { test(false); } Test.MyClassPrx batch = Test.MyClassPrxHelper.uncheckedCast(p.ice_batchOneway()); batch.ice_flushBatchRequests(); p.opByteSOnewayCallCount(); // Reset the call count for(int i = 0 ; i < 30 ; ++i) { try { batch.opByteSOneway(bs1); test(true); } catch(Ice.MemoryLimitException) { test(false); } } int count = 0; while(count < 27) // 3 * 9 requests auto-flushed. { count += p.opByteSOnewayCallCount(); System.Threading.Thread.Sleep(10); } if(batch.ice_getConnection() != null) { batch.ice_getConnection().flushBatchRequests(); Test.MyClassPrx batch2 = Test.MyClassPrxHelper.uncheckedCast(p.ice_batchOneway()); batch.ice_ping(); batch2.ice_ping(); batch.ice_flushBatchRequests(); batch.ice_getConnection().close(false); batch.ice_ping(); batch2.ice_ping(); batch.ice_getConnection(); batch2.ice_getConnection(); batch.ice_ping(); batch.ice_getConnection().close(false); try { batch.ice_ping(); test(false); } catch(Ice.CloseConnectionException) { } try { batch2.ice_ping(); test(false); } catch(Ice.CloseConnectionException) { } batch.ice_ping(); batch2.ice_ping(); } Ice.Identity identity = new Ice.Identity(); identity.name = "invalid"; Ice.ObjectPrx batch3 = batch.ice_identity(identity); batch3.ice_ping(); batch3.ice_flushBatchRequests(); // Make sure that a bogus batch request doesn't cause troubles to other ones. batch3.ice_ping(); batch.ice_ping(); batch.ice_flushBatchRequests(); batch.ice_ping(); }