ARC SDK
VOMSConfig.h
1 // -*- indent-tabs-mode: nil -*-
2 #ifndef __ARC_VOMSCONFIG_H__
3 #define __ARC_VOMSCONFIG_H__
4 
5 #include <string>
6 
7 namespace Arc {
8 
10  public:
11  VOMSConfigLine(const std::string& line);
12  operator bool(void);
13  bool operator!(void);
14  const std::string& Name() const;
15  const std::string& Host() const;
16  const std::string& Port() const;
17  const std::string& Subject() const;
18  const std::string& Alias() const;
19  std::string Str() const;
20  private:
21  std::string name;
22  std::string host;
23  std::string port;
24  std::string subject;
25  std::string alias;
26 };
27 
28 class VOMSConfig {
29  public:
30  class filter {
31  public:
32  virtual bool match(const VOMSConfigLine& line) const;
33  };
34  class iterator: private std::list<VOMSConfigLine>::iterator {
35  friend class VOMSConfig;
36  public:
37  iterator NextByName(void);
38  iterator NextByAlias(void);
39  iterator Next(const VOMSConfig::filter& lfilter);
40  iterator& operator=(const iterator& it);
41  operator bool(void) const;
42  bool operator!(void) const;
43  iterator(void);
44  iterator(const iterator& it);
45  VOMSConfigLine* operator->() const;
46  private:
47  std::list<VOMSConfigLine>* list_;
48  iterator(std::list<VOMSConfigLine>& list, std::list<VOMSConfigLine>::iterator it);
49  };
50  VOMSConfig(const std::string& path, const filter& lfilter = filter());
51  operator bool(void) const;
52  bool operator!(void) const;
53  iterator FirstByName(const std::string name);
54  iterator FirstByAlias(const std::string alias);
55  iterator First(const filter& lfilter);
56  private:
57  std::list<VOMSConfigLine> lines;
58  bool AddPath(const std::string& path, int depth, const filter& lfilter);
59 };
60 
61 } // namespace Arc
62 
63 #endif // __ARC_VOMSCONFIG_H__
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
Definition: VOMSConfig.h:9
Definition: VOMSConfig.h:28
Definition: VOMSConfig.h:34
Definition: VOMSConfig.h:30