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 (10 * 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() const;
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__
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
virtual DataStatus RemoveLocations(const DataPoint &p)
Remove locations present in another DataPoint object.
virtual DataStatus AddLocation(const URL &url, const std::string &meta)
Add URL representing physical replica to list of locations.
User configuration class
Definition: UserConfig.h:196
virtual bool Local() const
Returns true if file is local, e.g. file:// urls.
virtual void ReadOutOfOrder(bool v)
Allow/disallow DataPoint to read data out of order.
virtual const URL & CurrentLocation() const
Returns current (resolved) URL.
virtual bool HaveLocations() const
Returns true if number of resolved URLs is not 0.
virtual bool AcceptsMeta() const
Check if endpoint can have any use from meta information.
virtual void Range(unsigned long long int start=0, unsigned long long int end=0)
Set range of bytes to retrieve.
URL url
URL supplied in constructor.
Definition: DataPoint.h:799
virtual int BufNum() const
Get suggested number of buffers for transfers.
Status code returned by many DataPoint methods.
Definition: DataStatus.h:54
virtual const CheckSum * GetCheckSumObject(int index) const
Get CheckSum object at given position in list.
virtual bool IsIndex() const
Check if URL is an Indexing Service.
virtual bool LocationValid() const
Returns false no more locations are left and out of retries.
virtual bool Registered() const
Returns true if file is registered in indexing service (only known after Resolve()) ...
virtual bool GetAdditionalChecks() const
Returns true unless SetAdditionalChecks() was set to false.
virtual bool WriteOutOfOrder() const
Returns true if DataPoint supports receiving data out of order during writing.
virtual DataStatus CompareLocationMetadata() const
Compare metadata of DataPoint and current location.
virtual void Passive(bool v)
Set passive transfers for FTP-like protocols.
A DataPoint represents a data resource and is an abstraction of a URL.
Definition: DataPoint.h:121
const UserConfig usercfg
UserConfig supplied in constructor.
Definition: DataPoint.h:801
virtual long long int BufSize() const
Get suggested buffer size for transfers.
virtual bool LastLocation()
Returns true if the current location is the last.
Interface for checksum manipulations.
Definition: CheckSum.h:30
virtual DataStatus ClearLocations()
Remove all locations.
virtual bool NextLocation()
Switch to next location in list of URLs.
Represents set of buffers.
Definition: DataBuffer.h:19
virtual DataStatus PreUnregister(bool replication)
Index service pre-unregistration.
virtual DataPoint * CurrentLocationHandle() const
Returns a pointer to the DataPoint representing the current location.
virtual DataStatus PreRegister(bool replication, bool force=false)
Index service pre-registration.
Class to represent general URLs.
Definition: URL.h:88
virtual DataStatus Stat(std::list< FileInfo > &files, const std::list< DataPoint *> &urls, DataPointInfoType verb=INFO_TYPE_ALL)
Retrieve information about several DataPoints.
DataPointInfoType
Describes type of information about URL to request.
Definition: DataPoint.h:150
virtual void SetSecure(bool v)
Allow/disallow heavy security (data encryption) during data transfer.
URLMap allows mapping certain patterns of URLs to other URLs.
Definition: URLMap.h:22
virtual bool ReadOnly() const
Returns true if file is readonly.
virtual DataStatus Unregister(bool all)
Index service unregistration.
virtual int AddCheckSumObject(CheckSum *cksum)
Add a checksum object which will compute checksum during data transfer.
DataPointDirect represents "physical" data objects.
Definition: DataPointDirect.h:26
All the parameters.
Definition: DataPoint.h:160
virtual DataStatus Resolve(bool source)
Resolves index service URL into list of ordinary URLs.
virtual bool IsStageable() const
Check if URL should be staged or queried for Transport URL (TURL)
virtual const std::string & CurrentLocationMetadata() const
Returns meta information used to create current URL.
virtual bool GetSecure() const
Returns true if heavy security during data transfer is allowed.
virtual void SortLocations(const std::string &, const URLMap &)
Sort locations according to the specified pattern and URLMap.
Definition: DataPointDirect.h:84
virtual void SetAdditionalChecks(bool v)
Allow/disallow additional checks on a source DataPoint before transfer.
virtual bool ProvidesMeta() const
Check if endpoint can provide at least some meta information directly.
virtual DataStatus PostRegister(bool replication)
Index service post-registration.
virtual DataStatus RemoveLocation()
Remove current URL from list.