00001 /* 00002 This file is part of the Virtual Object System of 00003 the Interreality project (http://interreality.org). 00004 00005 Copyright (C) 2001, 2002 Peter Amstutz 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Lesser General Public 00009 License as published by the Free Software Foundation; either 00010 version 2 of the License, or (at your option) any later version. 00011 00012 This library is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 Lesser General Public License for more details. 00016 00017 You should have received a copy of the GNU Lesser General Public 00018 License along with this library; if not, write to the Free Software 00019 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 00021 Peter Amstutz <tetron@interreality.org> 00022 */ 00023 #ifndef _DIRECTORY_HH_ 00024 #define _DIRECTORY_HH_ 00025 00026 #include <vos/corelibs/vos/vos.hh> 00027 00028 /** @class Directory directory.hh vos/metaobjects/property/directory.hh 00029 * 00030 * This class reads a directory on the file system and creates FileProperty 00031 * and other Directory objects to mirror the file system. The directory 00032 * will also be represented as a MetaObject, with types given in a special 00033 * ".vostypes" file in the directory. 00034 * 00035 * Call sync() to synchronize with the file system. 00036 * 00037 */ 00038 class Directory : public virtual LocalMetaObject 00039 { 00040 private: 00041 string dirpath; 00042 struct stat status; 00043 bool insync; 00044 public: 00045 Directory(string name, LocalSite* ls, VobjectAccessControl* ac, const string& path); 00046 virtual ~Directory(); 00047 00048 virtual void syncTypes(string filename, Vobject* t); 00049 virtual void sync(); 00050 virtual const ChildList& getChildren() 00051 throw (AccessControlError, RemoteError); 00052 virtual Vobject& findObject(const string& path) 00053 throw (NoSuchSiteError, NoSuchObjectError, URL::BadURLError, AccessControlError, RemoteError); 00054 virtual Vobject::ParentChildRelation& findChild(const string& path) 00055 throw (NoSuchObjectError, AccessControlError, RemoteError); 00056 00057 }; 00058 00059 #endif