ARC SDK
DataPointDirect.h
1 // -*- indent-tabs-mode: nil -*-
2 
3 #ifndef __ARC_DATAPOINTDIRECT_H__
4 #define __ARC_DATAPOINTDIRECT_H__
5 
6 #include <list>
7 #include <string>
8 
9 #include <arc/data/DataPoint.h>
10 
11 #define MAX_PARALLEL_STREAMS 20
12 #define MAX_BLOCK_SIZE (1024 * 1024)
13 
14 namespace Arc {
15 
16  class DataBuffer;
17  class DataCallback;
18 
20 
27  : public DataPoint {
28  public:
29  virtual ~DataPointDirect();
30 
31  virtual bool IsIndex() const;
32  virtual bool IsStageable() const;
33 
34  virtual long long int BufSize() const;
35  virtual int BufNum() const;
36 
37  virtual bool Local() const;
38  virtual bool ReadOnly() const;
39 
40  virtual void ReadOutOfOrder(bool v);
41  virtual bool WriteOutOfOrder();
42 
43  virtual void SetAdditionalChecks(bool v);
44  virtual bool GetAdditionalChecks() const;
45 
46  virtual void SetSecure(bool v);
47  virtual bool GetSecure() const;
48 
49  virtual void Passive(bool v);
50 
51  virtual void Range(unsigned long long int start = 0,
52  unsigned long long int end = 0);
53 
54  virtual int AddCheckSumObject(CheckSum *cksum);
55 
56  virtual const CheckSum* GetCheckSumObject(int index) const;
57 
58  virtual DataStatus Stat(std::list<FileInfo>& files,
59  const std::list<DataPoint*>& urls,
61 
62  // Not supported for direct data points:
63  virtual DataStatus Resolve(bool source);
64  virtual DataStatus Resolve(bool source, const std::list<DataPoint*>& urls);
65  virtual bool Registered() const;
66  virtual DataStatus PreRegister(bool replication, bool force = false);
67  virtual DataStatus PostRegister(bool replication);
68  virtual DataStatus PreUnregister(bool replication);
69  virtual DataStatus Unregister(bool all);
70  virtual bool AcceptsMeta() const;
71  virtual bool ProvidesMeta() const;
72  virtual const URL& CurrentLocation() const;
73  virtual DataPoint* CurrentLocationHandle() const;
74  virtual const std::string& CurrentLocationMetadata() const;
75  virtual DataStatus CompareLocationMetadata() const;
76  virtual bool NextLocation();
77  virtual bool LocationValid() const;
78  virtual bool HaveLocations() const;
79  virtual bool LastLocation();
80  virtual DataStatus AddLocation(const URL& url, const std::string& meta);
81  virtual DataStatus RemoveLocation();
82  virtual DataStatus RemoveLocations(const DataPoint& p);
83  virtual DataStatus ClearLocations();
84  virtual void SortLocations(const std::string& /* pattern */,
85  const URLMap& /* url_map */) {};
86 
87  protected:
88  DataBuffer *buffer;
89  long long int bufsize;
90  int bufnum;
91  bool local;
92  bool readonly;
93  bool linkable;
94  bool is_secure;
95  bool force_secure;
96  bool force_passive;
97  bool additional_checks;
98  bool allow_out_of_order;
99  unsigned long long int range_start;
100  unsigned long long int range_end;
101  std::list<CheckSum*> checksums;
102  DataPointDirect(const URL& url, const UserConfig& usercfg, PluginArgument* parg);
103  };
104 
105 } // namespace Arc
106 
107 #endif // __ARC_DATAPOINTDIRECT_H__