~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/pbms/src/cslib/CSS3Protocol.h

  • Committer: Lee Bieber
  • Date: 2010-10-22 16:47:38 UTC
  • mfrom: (1841.1.7 drizzle_pbms)
  • Revision ID: kalebral@gmail.com-20101022164738-vv8w22b8towpb307
Merge Barry - fix bug 657830: PBMS build failure in GCC 4.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 */
24
24
 
25
25
#include "CSHTTPStream.h"
 
26
#include "CSMd5.h"
26
27
class S3ProtocolCon;
27
28
 
28
29
#define PUB_KEY_BIT             ((uint8_t)1)
30
31
#define SERVER_BIT              ((uint8_t)4)
31
32
 
32
33
 
 
34
typedef struct S3Range {
 
35
         off64_t startByte;
 
36
         off64_t endByte;
 
37
} S3RangeRec, *S3RangePtr;
 
38
 
33
39
class CSS3Protocol: public CSRefObject {
34
40
        private:
35
41
        
39
45
        CSString *s3_private_key;
40
46
        
41
47
        uint8_t s3_ready; // A flag to indicate if the S3 protocol has been fully initialised.
42
 
        uint32_t s3_maxRetrys; 
 
48
        uint32_t s3_maxRetries; 
 
49
        uint32_t s3_sleepTime; 
43
50
        
44
51
        CSString *s3_getSignature(const char *verb, 
45
52
                                                                const char *md5, 
95
102
                }
96
103
        }
97
104
 
 
105
        void s3_setMaxRetries(uint32_t retries){s3_maxRetries = retries;}
 
106
        void s3_setSleepTime(uint32_t nap_time){s3_sleepTime = nap_time;}
 
107
        
98
108
        const char *s3_getPrivateKey() { return s3_private_key->getCString();}
99
109
        
100
110
        bool s3_isReady() { return ((s3_ready & SERVER_BIT) && (s3_ready & PUB_KEY_BIT) && (s3_ready & PRIV_KEY_BIT));}
105
115
        CSVector *s3_send(CSInputStream *input, const char *bucket, const char *key, off64_t size, const char *content_type = NULL, Md5Digest *digest = NULL, const char *s3Authorization = NULL, time_t s3AuthorizationTime = 0);
106
116
 
107
117
        // s3_receive() returns false if the object was not found.
108
 
        CSVector *s3_receive(CSOutputStream *output, const char *bucket, const char *key, bool *found);
 
118
        // If 'output' is NULL then only the headers will be fetched.
 
119
        CSVector *s3_receive(CSOutputStream *output, const char *bucket, const char *key, bool *found, S3RangePtr range = NULL, time_t *last_modified = NULL);
109
120
 
110
121
        // s3_delete() returns false if the object was not found.
111
122
        bool s3_delete(const char *bucket, const char *key);