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  virtual bool SupportsTransfer() const;
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  virtual DataStatus Transfer(const URL& otherendpoint, bool source,
71  TransferCallback callback = NULL);
72 
73  virtual DataStatus Check(bool check_meta);
74 
75  virtual DataStatus Remove();
76 
77  virtual void ReadOutOfOrder(bool v);
78  virtual bool WriteOutOfOrder() const;
79 
80  virtual void SetAdditionalChecks(bool v);
81  virtual bool GetAdditionalChecks() const;
82 
83  virtual void SetSecure(bool v);
84  virtual bool GetSecure() const;
85 
87 
88  virtual void Passive(bool v);
89 
90  virtual void Range(unsigned long long int start = 0,
91  unsigned long long int end = 0);
92 
93  virtual int AddCheckSumObject(CheckSum *cksum);
94 
95  virtual const CheckSum* GetCheckSumObject(int index) const;
96 
97  protected:
98  bool resolved;
99  bool registered;
100  DataPointIndex(const URL& url, const UserConfig& usercfg, PluginArgument* parg);
101 
102  private:
103  // Following members must be kept synchronised hence they are private
105  std::list<URLLocation> locations;
106  std::list<URLLocation>::iterator location;
107  DataHandle *h;
108  void SetHandle();
109  };
110 
111 } // namespace Arc
112 
113 #endif // __ARC_DATAPOINTINDEX_H__
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
virtual void Passive(bool v)
Set passive transfers for FTP-like protocols.
User configuration class
Definition: UserConfig.h:196
virtual DataStatus StartReading(DataBuffer &buffer)
Start reading data from URL.
virtual void SetSize(const unsigned long long int val)
Set value of meta-information &#39;size&#39;.
virtual void SetAdditionalChecks(bool v)
Allow/disallow additional checks on a source DataPoint before transfer.
virtual bool AcceptsMeta() const
Check if endpoint can have any use from meta information.
virtual bool SupportsTransfer() const
Returns true if DataPoint supports internal transfer.
virtual bool IsIndex() const
Check if URL is an Indexing Service.
DataPointIndex represents "index" data objects, e.g. catalogs.
Definition: DataPointIndex.h:21
virtual bool LocationValid() const
Returns false no more locations are left and out of retries.
virtual bool ReadOnly() const
Returns true if file is readonly.
DataPointAccessLatency
Describes the latency to access this URL.
Definition: DataPoint.h:140
This class is a wrapper around the DataPoint class.
Definition: DataHandle.h:33
URL url
URL supplied in constructor.
Definition: DataPoint.h:799
virtual bool LastLocation()
Returns true if the current location is the last.
virtual bool NextLocation()
Switch to next location in list of URLs.
Status code returned by many DataPoint methods.
Definition: DataStatus.h:54
virtual DataStatus FinishReading(bool error=false)
Finish reading from the URL.
virtual DataPointAccessLatency GetAccessLatency() const
Get value of meta-information &#39;access latency&#39;.
virtual DataStatus Remove()
Remove/delete object at URL.
virtual bool IsStageable() const
Check if URL should be staged or queried for Transport URL (TURL)
virtual bool GetSecure() const
Returns true if heavy security during data transfer is allowed.
virtual void Range(unsigned long long int start=0, unsigned long long int end=0)
Set range of bytes to retrieve.
virtual void SetCheckSum(const std::string &val)
Set value of meta-information &#39;checksum&#39;.
virtual void SetSecure(bool v)
Allow/disallow heavy security (data encryption) during data transfer.
virtual void SetMeta(const DataPoint &p)
Copy meta information from another object.
virtual bool ProvidesMeta() const
Check if endpoint can provide at least some meta information directly.
virtual DataStatus CompareLocationMetadata() const
Compare metadata of DataPoint and current location.
virtual const URL & CurrentLocation() const
Returns current (resolved) URL.
virtual const CheckSum * GetCheckSumObject(int index) const
Get CheckSum object at given position in list.
virtual void SetTries(const int n)
Set number of retries.
virtual bool Registered() const
Returns true if file is registered in indexing service (only known after Resolve()) ...
virtual DataStatus Transfer(const URL &otherendpoint, bool source, TransferCallback callback=NULL)
Do a transfer in a single operation.
virtual bool Local() const
Returns true if file is local, e.g. file:// urls.
A DataPoint represents a data resource and is an abstraction of a URL.
Definition: DataPoint.h:121
virtual bool WriteOutOfOrder() const
Returns true if DataPoint supports receiving data out of order during writing.
virtual DataStatus Check(bool check_meta)
Query the DataPoint to check if object is accessible.
const UserConfig usercfg
UserConfig supplied in constructor.
Definition: DataPoint.h:801
Interface for checksum manipulations.
Definition: CheckSum.h:30
virtual bool GetAdditionalChecks() const
Returns true unless SetAdditionalChecks() was set to false.
virtual DataStatus PrepareWriting(unsigned int timeout, unsigned int &wait_time)
Prepare DataPoint for writing.
virtual DataStatus AddLocation(const URL &url, const std::string &meta)
Add URL representing physical replica to list of locations.
Represents set of buffers.
Definition: DataBuffer.h:19
virtual DataStatus PrepareReading(unsigned int timeout, unsigned int &wait_time)
Prepare DataPoint for reading.
virtual DataStatus ClearLocations()
Remove all locations.
virtual DataStatus FinishWriting(bool error=false)
Finish writing to the URL.
virtual std::vector< URL > TransferLocations() const
Returns physical file(s) to read/write, if different from CurrentLocation()
Class to represent general URLs.
Definition: URL.h:88
virtual DataStatus RemoveLocations(const DataPoint &p)
Remove locations present in another DataPoint object.
virtual DataStatus StopWriting()
Stop writing.
URLMap allows mapping certain patterns of URLs to other URLs.
Definition: URLMap.h:22
Callbacks to be used when there is not enough space on the local filesystem.
Definition: DataCallback.h:20
virtual bool HaveLocations() const
Returns true if number of resolved URLs is not 0.
virtual DataStatus RemoveLocation()
Remove current URL from list.
virtual int BufNum() const
Get suggested number of buffers for transfers.
void(* TransferCallback)(unsigned long long int bytes_transferred)
Callback for use in protocol-internal or 3rd party transfers.
Definition: DataPoint.h:131
virtual void ReadOutOfOrder(bool v)
Allow/disallow DataPoint to read data out of order.
virtual const std::string & CurrentLocationMetadata() const
Returns meta information used to create current URL.
virtual DataPoint * CurrentLocationHandle() const
Returns a pointer to the DataPoint representing the current location.
virtual int AddCheckSumObject(CheckSum *cksum)
Add a checksum object which will compute checksum during data transfer.
virtual DataStatus StartWriting(DataBuffer &buffer, DataCallback *space_cb=NULL)
Start writing data to URL.
virtual void SortLocations(const std::string &pattern, const URLMap &url_map)
Sort locations according to the specified pattern and URLMap.
virtual DataStatus StopReading()
Stop reading.
virtual long long int BufSize() const
Get suggested buffer size for transfers.
virtual void ClearTransferLocations()
Clear list of physical file(s) to read/write.