private ObjectServerImpl(LocalObjectContainer container, ServerConfigurationImpl serverConfig, int port, bool isEmbeddedServer) { _isEmbeddedServer = isEmbeddedServer; _container = container; _serverConfig = serverConfig; _socketFactory = serverConfig.Networking.SocketFactory; _transactionPool = new ClientTransactionPool(container); _port = port; _name = "db4o ServerSocket FILE: " + container.ToString() + " PORT:" + _port; _container.SetServer(true); ConfigureObjectServer(); _classInfoHelper = new Db4objects.Db4o.CS.Internal.ClassInfoHelper(Db4oClientServerLegacyConfigurationBridge .AsLegacy(serverConfig)); _container.ClassCollection().CheckAllClassChanges(); bool ok = false; try { EnsureLoadStaticClass(); StartCommittedCallbackThread(_committedInfosQueue); StartServer(); if (_serverConfig != null) { _serverConfig.ApplyConfigurationItems(this); } ok = true; } finally { if (!ok) { Close(); } } }
private void BuildCommitTimestampIndex(LocalObjectContainer container) { versionFieldMetadata = container.Handlers.Indexes()._version; ClassMetadataIterator i = container.ClassCollection().Iterator(); while (i.MoveNext()) { ClassMetadata clazz = i.CurrentClass(); if (clazz.HasVersionField() && !clazz.IsStruct()) { RebuildIndexForClass(container, clazz); } } }
private void RebuildUUIDIndex(LocalObjectContainer file) { UUIDFieldMetadata uuid = file.UUIDIndex(); ClassMetadataIterator i = file.ClassCollection().Iterator(); while (i.MoveNext()) { ClassMetadata clazz = i.CurrentClass(); if (clazz.GenerateUUIDs()) { uuid.RebuildIndexForClass(file, clazz); } } }
public static IDictionary TypesFor(LocalObjectContainer db, Sharpen.Util.ISet ids ) { IDictionary id2clazzes = new Hashtable(); ClassMetadataIterator iter = db.ClassCollection().Iterator(); while (iter.MoveNext()) { for (IEnumerator idIter = ids.GetEnumerator(); idIter.MoveNext(); ) { int id = ((int)idIter.Current); ClassMetadata clazz = iter.CurrentClass(); BTree btree = BTreeClassIndexStrategy.Btree(clazz); if (btree.Search(db.SystemTransaction(), id) != null) { Sharpen.Util.ISet clazzes = ((Sharpen.Util.ISet)id2clazzes[id]); if (clazzes == null) { clazzes = new HashSet(); id2clazzes[id] = clazzes; } clazzes.Add(clazz); } } } IDictionary id2clazz = new Hashtable(); for (IEnumerator idIter = id2clazzes.Keys.GetEnumerator(); idIter.MoveNext(); ) { int id = ((int)idIter.Current); Sharpen.Util.ISet clazzes = ((Sharpen.Util.ISet)id2clazzes[id]); ClassMetadata mostSpecific = null; for (IEnumerator curClazzIter = clazzes.GetEnumerator(); curClazzIter.MoveNext(); ) { ClassMetadata curClazz = ((ClassMetadata)curClazzIter.Current); for (IEnumerator cmpClazzIter = clazzes.GetEnumerator(); cmpClazzIter.MoveNext(); ) { ClassMetadata cmpClazz = ((ClassMetadata)cmpClazzIter.Current); if (curClazz.Equals(cmpClazz._ancestor)) { goto OUTER_continue; } } mostSpecific = curClazz; break; OUTER_continue: ; } OUTER_break: ; id2clazz[id] = mostSpecific; } return id2clazz; }
public object Run() { try { var transaction = _enclosing.CheckTransaction(trans); var candidateTransaction = _enclosing._semaphores.Get(name); if (trans == candidateTransaction) { acquired.value = true; return(null); } if (candidateTransaction == null) { _enclosing._semaphores.Put(name, transaction); acquired.value = true; return(null); } var endtime = Runtime.CurrentTimeMillis() + timeout; long waitTime = timeout; while (waitTime > 0) { _enclosing._semaphoresLock.Awake(); _enclosing._semaphoresLock.Snooze(waitTime); if (_enclosing.ClassCollection() == null) { acquired.value = false; return(null); } candidateTransaction = _enclosing._semaphores.Get(name); if (candidateTransaction == null) { _enclosing._semaphores.Put(name, transaction); acquired.value = true; return(null); } waitTime = endtime - Runtime.CurrentTimeMillis(); } acquired.value = false; return(null); } finally { _enclosing._semaphoresLock.Awake(); } }