1 /* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com 2 3 This file is part of the db4o open source object database. 4 5 db4o is free software; you can redistribute it and/or modify it under 6 the terms of version 2 of the GNU General Public License as published 7 by the Free Software Foundation and as clarified by db4objects' GPL 8 interpretation policy, available at 9 http://www.db4o.com/about/company/legalpolicies/gplinterpretation/ 10 Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street, 11 Suite 350, San Mateo, CA 94403, USA. 12 13 db4o is distributed in the hope that it will be useful, but WITHOUT ANY 14 WARRANTY; without even the implied warranty of MERCHANTABILITY or 15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 for more details. 17 18 You should have received a copy of the GNU General Public License along 19 with this program; if not, write to the Free Software Foundation, Inc., 20 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 21 package com.db4o; 22 23 import com.db4o.ext.*; 24 25 /** 26 * the db4o server interface. 27 * <br><br>- db4o servers can be opened with {@link Db4o#openServer(String, int)}.<br> 28 * - Direct in-memory connections to servers can be made with {@link #openClient()} <br> 29 * - TCP connections are available through {@link Db4o#openClient(String, int, String, String)}. 30 * <br><br>Before connecting clients over TCP, you have to 31 * {@link #grantAccess(String, String)} to the username and password combination 32 * that you want to use. 33 * @see Db4o#openServer(java.lang.String, int) Db4o.openServer 34 * @see ExtObjectServer ExtObjectServer for extended functionality 35 */ 36 public interface ObjectServer { 37 /** 38 * closes the <code>ObjectServer</code> and writes all cached data. 39 * <br><br> 40 * @return true - denotes that the last instance connected to the 41 * used database file was closed. 42 */ 43 public boolean close(); 44 45 /** 46 * returns an ObjectServer with extended functionality. 47 * <br><br>Use this method as a convient accessor to extended methods. 48 * Every ObjectServer can be casted to an ExtObjectServer. 49 * <br><br>The functionality is split to two interfaces to allow newcomers to 50 * focus on the essential methods. 51 */ 52 public ExtObjectServer ext(); 53 54 /** 55 * grants client access to the specified user with the specified password. 56 * <br><br>If the user already exists, the password is changed to 57 * the specified password.<br><br> 58 * @param userName the name of the user 59 * @param password the password to be used 60 */ 61 public void grantAccess(String userName, String password); 62 63 /** 64 * opens a client against this server. 65 * <br><br>A client opened with this method operates within the same VM 66 * as the server. Since an embedded client can use direct communication, without 67 * an in-between socket connection, performance will be better than a client 68 * opened with 69 * {@link Db4o#openClient(java.lang.String, int, java.lang.String, java.lang.String)} 70 * 71 * <br><br>Every client has it's own transaction and uses it's own cache 72 * for it's own version of all peristent objects. 73 * 74 */ 75 public ObjectContainer openClient(); 76 77 } 78