private ServerMessageDispatcherImpl FirstMessageDispatcherFor(ObjectServerImpl server ) { IEnumerator dispatchers = server.IterateDispatchers(); Assert.IsTrue(dispatchers.MoveNext()); ServerMessageDispatcherImpl msgDispatcher = (ServerMessageDispatcherImpl)dispatchers .Current; return(msgDispatcher); }
/// <exception cref="System.Exception"></exception> public virtual void Test() { ObjectServerImpl server = (ObjectServerImpl)Db4oClientServer.OpenServer(TempFile( ), Db4oClientServer.ArbitraryPort); Lock4 Lock = new Lock4(); server.ClientDisconnected += new System.EventHandler <Db4objects.Db4o.Events.StringEventArgs> (new _IEventListener4_39(Lock).OnEvent); server.GrantAccess(User, Password); IObjectContainer client = OpenClient(server.Port()); ServerMessageDispatcherImpl msgDispatcher = FirstMessageDispatcherFor(server); Transaction transaction = msgDispatcher.Transaction(); ITransactionalIdSystem idSystem = transaction.IdSystem(); int prefetchedID = idSystem.PrefetchID(); Assert.IsGreater(0, prefetchedID); Lock.Run(new _IClosure4_58(client, Lock, idSystem, prefetchedID)); // This wont work with the PointerBasedIdSystem server.Close(); }
/// <exception cref="System.Exception"></exception> public virtual void Test() { IExtObjectContainer db = Fixture().Db(); ObjectServerImpl serverImpl = (ObjectServerImpl)ClientServerFixture().Server(); try { IEnumerator iter = serverImpl.IterateDispatchers(); iter.MoveNext(); ServerMessageDispatcherImpl serverDispatcher = (ServerMessageDispatcherImpl)iter. Current; serverDispatcher.Socket().Close(); Runtime4.Sleep(1000); Assert.Expect(typeof(DatabaseClosedException), new _ICodeBlock_30(db)); Assert.IsTrue(db.IsClosed()); } finally { serverImpl.Close(); } }