ARC SDK
DataPointIndex.h
1 // -*- indent-tabs-mode: nil -*-
2 
3 #ifndef __ARC_DATAPOINTINDEX_H__
4 #define __ARC_DATAPOINTINDEX_H__
5 
6 #include <list>
7 #include <string>
8 
9 #include <arc/data/DataHandle.h>
10 #include <arc/data/DataPoint.h>
11 
12 namespace Arc {
13 
15 
22  : public DataPoint {
23  public:
24  virtual ~DataPointIndex();
25 
26  virtual const URL& CurrentLocation() const;
27  virtual const std::string& CurrentLocationMetadata() const;
28  virtual DataPoint* CurrentLocationHandle() const;
29  virtual DataStatus CompareLocationMetadata() const;
30  virtual bool NextLocation();
31  virtual bool LocationValid() const;
32  virtual bool HaveLocations() const;
33  virtual bool LastLocation();
34  virtual DataStatus RemoveLocation();
35  virtual DataStatus RemoveLocations(const DataPoint& p);
36  virtual DataStatus ClearLocations();
37  virtual DataStatus AddLocation(const URL& url, const std::string& meta);
38  virtual void SortLocations(const std::string& pattern,
39  const URLMap& url_map);
40 
41  virtual bool IsIndex() const;
42  virtual bool IsStageable() const;
43  virtual bool AcceptsMeta() const;
44  virtual bool ProvidesMeta() const;
45  virtual void SetMeta(const DataPoint& p);
46  virtual void SetCheckSum(const std::string& val);
47  virtual void SetSize(const unsigned long long int val);
48  virtual bool Registered() const;
49 
50  virtual void SetTries(const int n);
51 
52  // the following are relayed to the current location
53  virtual long long int BufSize() const;
54  virtual int BufNum() const;
55  virtual bool Local() const;
56  virtual bool ReadOnly() const;
57  virtual DataStatus PrepareReading(unsigned int timeout,
58  unsigned int& wait_time);
59  virtual DataStatus PrepareWriting(unsigned int timeout,
60  unsigned int& wait_time);
61  virtual DataStatus StartReading(DataBuffer& buffer);
62  virtual DataStatus StartWriting(DataBuffer& buffer,
63  DataCallback *space_cb = NULL);
64  virtual DataStatus StopReading();
65  virtual DataStatus StopWriting();
66  virtual DataStatus FinishReading(bool error = false);
67  virtual DataStatus FinishWriting(bool error = false);
68  virtual std::vector<URL> TransferLocations() const;
69 
70  virtual DataStatus Check(bool check_meta);
71 
72  virtual DataStatus Remove();
73 
74  virtual void ReadOutOfOrder(bool v);
75  virtual bool WriteOutOfOrder();
76 
77  virtual void SetAdditionalChecks(bool v);
78  virtual bool GetAdditionalChecks() const;
79 
80  virtual void SetSecure(bool v);
81  virtual bool GetSecure() const;
82 
84 
85  virtual void Passive(bool v);
86 
87  virtual void Range(unsigned long long int start = 0,
88  unsigned long long int end = 0);
89 
90  virtual int AddCheckSumObject(CheckSum *cksum);
91 
92  virtual const CheckSum* GetCheckSumObject(int index) const;
93 
94  protected:
95  bool resolved;
96  bool registered;
97  DataPointIndex(const URL& url, const UserConfig& usercfg, PluginArgument* parg);
98 
99  private:
100  // Following members must be kept synchronised hence they are private
102  std::list<URLLocation> locations;
103  std::list<URLLocation>::iterator location;
104  DataHandle *h;
105  void SetHandle();
106  };
107 
108 } // namespace Arc
109 
110 #endif // __ARC_DATAPOINTINDEX_H__