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  virtual void ClearTransferLocations();
70 
71  virtual DataStatus Check(bool check_meta);
72 
73  virtual DataStatus Remove();
74 
75  virtual void ReadOutOfOrder(bool v);
76  virtual bool WriteOutOfOrder();
77 
78  virtual void SetAdditionalChecks(bool v);
79  virtual bool GetAdditionalChecks() const;
80 
81  virtual void SetSecure(bool v);
82  virtual bool GetSecure() const;
83 
85 
86  virtual void Passive(bool v);
87 
88  virtual void Range(unsigned long long int start = 0,
89  unsigned long long int end = 0);
90 
91  virtual int AddCheckSumObject(CheckSum *cksum);
92 
93  virtual const CheckSum* GetCheckSumObject(int index) const;
94 
95  protected:
96  bool resolved;
97  bool registered;
98  DataPointIndex(const URL& url, const UserConfig& usercfg, PluginArgument* parg);
99 
100  private:
101  // Following members must be kept synchronised hence they are private
103  std::list<URLLocation> locations;
104  std::list<URLLocation>::iterator location;
105  DataHandle *h;
106  void SetHandle();
107  };
108 
109 } // namespace Arc
110 
111 #endif // __ARC_DATAPOINTINDEX_H__