1 21 package com.db4o; 22 23 import java.io.IOException ; 24 25 import com.db4o.config.Configuration; 26 import com.db4o.cs.*; 27 import com.db4o.ext.*; 28 import com.db4o.foundation.*; 29 import com.db4o.foundation.network.YapSocketReal; 30 import com.db4o.inside.*; 31 import com.db4o.reflect.Reflector; 32 33 45 public class Db4o { 46 47 static final Config4Impl i_config = new Config4Impl(); 48 private static Sessions i_sessions = new Sessions(); 49 50 static { 51 Platform4.getDefaultConfiguration(i_config); 52 } 53 54 57 public static void main(String args[]){ 58 System.out.println(version()); 59 } 60 61 71 public static Configuration configure(){ 72 return i_config; 73 } 74 75 80 public static Configuration newConfiguration() { 81 Config4Impl config = new Config4Impl(); 82 Platform4.getDefaultConfiguration(config); 83 return config; 84 } 85 86 92 public static Configuration cloneConfiguration() { 93 return (Config4Impl) ((DeepClone) Db4o.configure()).deepClone(null); 94 } 95 96 118 public static ObjectContainer openClient(String hostName, int port, String user, String password) 119 throws IOException { 120 return openClient(Db4o.cloneConfiguration(),hostName,port,user,password); 121 } 122 123 143 public static ObjectContainer openClient(Configuration config,String hostName, int port, String user, String password) 144 throws IOException { 145 synchronized(Global4.lock){ 146 return new YapClient(config,new YapSocketReal(hostName, port), user, password, true); 147 } 148 } 149 150 170 public static final ObjectContainer openFile(String databaseFileName) throws DatabaseFileLockedException { 171 return openFile(cloneConfiguration(),databaseFileName); 172 } 173 174 192 public static final ObjectContainer openFile(Configuration config,String databaseFileName) throws DatabaseFileLockedException { 193 synchronized(Global4.lock){ 194 return i_sessions.open(config,databaseFileName); 195 } 196 } 197 198 protected static final ObjectContainer openMemoryFile1(Configuration config,MemoryFile memoryFile) { 199 synchronized(Global4.lock){ 200 if(memoryFile == null){ 201 memoryFile = new MemoryFile(); 202 } 203 ObjectContainer oc = null; 204 if (Deploy.debug) { 205 System.out.println("db4o Debug is ON"); 206 oc = new YapMemoryFile(config,memoryFile); 207 208 } 211 else { 212 try { 213 oc = new YapMemoryFile(config,memoryFile); 214 } 215 catch(Throwable t) { 216 Messages.logErr(i_config, 4, "Memory File", t); 217 return null; 218 } 219 } 220 Platform4.postOpen(oc); 221 Messages.logMsg(i_config, 5, "Memory File"); 222 return oc; 223 } 224 } 225 226 227 246 public static final ObjectServer openServer(String databaseFileName, int port) throws DatabaseFileLockedException { 247 return openServer(cloneConfiguration(),databaseFileName,port); 248 } 249 250 267 public static final ObjectServer openServer(Configuration config,String databaseFileName, int port) throws DatabaseFileLockedException { 268 synchronized(Global4.lock){ 269 YapFile stream = (YapFile)openFile(config,databaseFileName); 270 if(stream == null){ 271 return null; 272 } 273 synchronized(stream.lock()){ 274 return new YapServer(stream, port); 275 } 276 } 277 } 278 279 static Reflector reflector(){ 280 return i_config.reflector(); 281 } 282 283 static void forEachSession(Visitor4 visitor){ 284 i_sessions.forEach(visitor); 285 } 286 287 static void sessionStopped(Session a_session){ 288 i_sessions.remove(a_session); 289 } 290 291 296 public static final String version () { 297 return "db4o " + Db4oVersion.NAME; 298 } 299 } 300 | Popular Tags |