Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

FileStreamConnection.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *  filename  : FileStreamConnection.h
00003  *  authors   : Salvatore Monforte <salvatore.monforte@ct.infn.it>
00004  *  copyright : (C) 2002 by INFN
00005  ***************************************************************************/
00006 
00007 // $Id:
00008 
00015 #ifndef _FILESTREAMCONNECTION_
00016 #define _FILESTREAMCONNECTION_ 
00017 
00018 #include <list>
00019 #include <fstream>
00020 
00021 #include "edg/workload/common/ldif2classad/LDAPConnection.h"
00022 #include "edg/workload/common/ldif2classad/LDIFObject.h"
00023 
00024 namespace classad {
00025 class ClassAd;
00026 }
00027 
00028 namespace edg {
00029 namespace workload {
00030 namespace common {
00031 namespace ldif2classad {
00032 
00033 class fstream_result_entry_t;
00038 class fstream_search_result_t : public generic_search_result_t 
00039 {
00040 public:
00041   typedef std::list<classad::ClassAd*> result_container_type_t;
00042   typedef result_container_type_t::const_iterator const_iterator;
00043   
00047   fstream_search_result_t(result_container_type_t *result);
00048   
00049   ~fstream_search_result_t();
00050   
00054   bool good() const;
00055   bool empty() const;
00056 
00061   generic_result_entry_t* make_first_entry() const;
00062   
00063 private:
00064   /* A pointer to the concrete LDAP result returned by ldap search */
00065   result_container_type_t  *fsresult;
00066 };
00067 
00073 class fstream_result_entry_t : public generic_result_entry_t
00074 {
00075 public:
00081   fstream_result_entry_t( const fstream_search_result_t::const_iterator& first,
00082                           const fstream_search_result_t::const_iterator& last );
00083   
00088   bool next();
00093   bool good () const;
00094 
00099   std::string distinguished_name() const;
00100   
00105   LDIFObject* value();
00106 
00107 private:
00108   /* ? */
00109   fstream_search_result_t::const_iterator fsentry;
00110   /* ? */
00111   fstream_search_result_t::const_iterator noentry;
00112   /* ? */
00113   LDIFObject object;
00114 };
00115 
00123 class FileStreamConnection : public LDAPConnection
00124 {
00125  public:
00126   typedef classad::ClassAd source_data_type_t;
00127   typedef std::list<source_data_type_t*> source_data_container_t; 
00131   FileStreamConnection(const std::string&);
00132   
00136   virtual ~FileStreamConnection();
00137   
00143   bool open();
00149   bool close();
00156   generic_search_result_t* execute(LDAPQuery* q); 
00161   bool is_established() const;
00162   void use_multi_attribute_list(std::vector<std::string>* multi_attributes) { this -> multi_attributes = multi_attributes; }
00163   // private:
00164   void delete_source_data();
00165   bool load_source_data();
00166   bool read_data_object(std::string& s);
00167   bool seek_data_object();
00168   
00169   
00170   bool to_requirements(const std::string& s, std::string& r);
00171 
00172 private:
00173   std::string source_name;
00174   std::ifstream source_stream;
00175   source_data_container_t *source_data;
00176   std::vector<std::string>*  multi_attributes;
00177 };
00178 
00179 #endif
00180 
00181 } // namespace ldif2classad 
00182 } // namespace common
00183 } // namespace workload
00184 } // namespace edg 
00185 
00186 /*
00187   Local Variables:
00188   mode: c++
00189   End:
00190 */

Generated on Fri May 14 14:18:25 2004 for COMMON API - configuration, jobid, ldif2classadi, logger, process, requestad, socket++i, task, utilities by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002