~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/pbms/src/pbmslib.h

  • Committer: Mark Atwood
  • Date: 2011-12-20 02:32:53 UTC
  • mfrom: (2469.1.1 drizzle-build)
  • Revision ID: me@mark.atwood.name-20111220023253-bvu0kr14kwsdvz7g
mergeĀ lp:~brianaker/drizzle/deprecate-pbms

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2008 PrimeBase Technologies GmbH, Germany
2
 
 *
3
 
 *  PrimeBase Media Stream (PBMS)
4
 
 *
5
 
 * This program is free software; you can redistribute it and/or modify
6
 
 * it under the terms of the GNU Lesser General Public License as published by
7
 
 * the Free Software Foundation; either version 2 of the License, or
8
 
 * (at your option) any later version.
9
 
 *
10
 
 * This program is distributed in the hope that it will be useful,
11
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 
 * GNU Lesser General Public License for more details.
14
 
 *
15
 
 * You should have received a copy of the GNU Lesser General Public License
16
 
 * along with this program; if not, write to the Free Software
17
 
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
 
 *
19
 
 * 2008-09-10   Barry Leslie
20
 
 *
21
 
 * H&G2JCtL
22
 
 */
23
 
#pragma once
24
 
#ifndef __PBMSLIB_H__
25
 
#define __PBMSLIB_H__
26
 
 
27
 
#ifdef __cplusplus
28
 
extern "C" {
29
 
#endif
30
 
 
31
 
#define MS_STANDARD_STORAGE             0       // BLOB data is stored in the repository.
32
 
#define MS_CLOUD_STORAGE                1       // BLOB data is in S3 cloud storage.
33
 
 
34
 
/*<DRIZZLE>*/
35
 
#define MS_CHECKSUM_TAG       "PBMS_CHECKSUM"
36
 
#define MS_ALIAS_TAG          "PBMS_BLOB_ALIAS"
37
 
#define MS_BLOB_INFO_REQUEST    "PBMS_RETURN_HEADER_ONLY"
38
 
#define MS_PING_REQUEST       "PBMS_PING_CONNECTION"
39
 
#define MS_BLOB_SIZE          "PBMS_BLOB_SIZE"
40
 
#define MS_LAST_ACCESS        "PBMS_LAST_ACCESS"
41
 
#define MS_ACCESS_COUNT       "PBMS_ACCESS_COUNT"
42
 
#define MS_CREATION_TIME      "PBMS_CREATION_TIME"
43
 
#define MS_BLOB_TYPE          "PBMS_BLOB_TYPE"
44
 
 
45
 
#define MS_REQUEST_SIZE       "PBMS_REQUEST_SIZE"     // The number of bytes of BLOB data the client requests.
46
 
#define MS_REQUEST_OFFSET     "PBMS_REQUEST_OFFSET"   // The offset into the BLOB that the client requests the data from.
47
 
 
48
 
#define MS_CLOUD_SERVER       "PBMS_CLOUD_SERVER"
49
 
#define MS_CLOUD_BUCKET       "PBMS_CLOUD_BUCKET"
50
 
#define MS_CLOUD_OBJECT_KEY             "PBMS_CLOUD_OBJECT_KEY"
51
 
#define MS_CLOUD_KEY          "PBMS_CLOUD_KEY"
52
 
#define MS_BLOB_SIGNATURE     "PBMS_BLOB_SIGNATURE"
53
 
#define MS_BLOB_DATE          "PBMS_BLOB_DATE"  // The date used when creating the signature.
54
 
 
55
 
#define MS_META_NAME_SIZE               32
56
 
#define MS_META_VALUE_SIZE              1024
57
 
#define MS_BLOB_ALIAS_SIZE              MS_META_VALUE_SIZE
58
 
#define MS_BLOB_URL_SIZE                200
59
 
 
60
 
#ifndef PBMS_PORT
61
 
#define DEFAULT_PBMS_PORT 8080
62
 
#else
63
 
#define DEFAULT_PBMS_PORT PBMS_PORT
64
 
#endif
65
 
 
66
 
/* PBMS handle types. */
67
 
typedef void *PBMS;                             // A connection handle.
68
 
 
69
 
typedef unsigned char pbms_bool;
70
 
 
71
 
/* options for pbms_set_option() and pbms_get_option() */
72
 
enum pbms_option                                                /*: Parameter type      |       Information                                                                                                                                                                                                             */
73
 
{
74
 
  PBMS_OPTION_KEEP_ALIVE,                               /*: unsigned int*       |       A boolean value indicating if the keep_alive flag should be set on HTTP requests.(Defalt = false)       */
75
 
  PBMS_OPTION_TRANSMITION_TIMEOUT,              /*: unsigned int*       |       If greater than zero this sets a limit to how long a blob transfer can take.  (Defalt = 0)                                              */
76
 
  PBMS_OPTION_HOST,                                             /*: (const char *)*     |       The connection's Media Stream server host IP address. (Read Only)                                                                                               */
77
 
  PBMS_OPTION_PORT,                                             /*: unsigned int*       |       The connection's Media Stream server host port number. (Read Only)                                                                                              */
78
 
  PBMS_OPTION_DATABASE                                  /*: (const char *)*     |       The connection's associated database.                                                                                                                                                   */
79
 
};
80
 
 
81
 
typedef size_t (* PBMS_READ_CALLBACK_FUNC) (void *caller_data, char *buffer, size_t size, pbms_bool reset);
82
 
typedef size_t (* PBMS_WRITE_CALLBACK_FUNC) (void *caller_data, const char *buffer, size_t size, pbms_bool reset);
83
 
 
84
 
pbms_bool pbms_library_init();
85
 
void    pbms_library_end();
86
 
PBMS pbms_connect(const char* host, unsigned int port, const char *database);
87
 
 
88
 
 
89
 
void pbms_close(PBMS pbms);
90
 
pbms_bool pbms_set_option(PBMS pbms, enum pbms_option option, const void *in_value);
91
 
pbms_bool pbms_get_option(PBMS pbms, enum pbms_option option, void *out_value);
92
 
int pbms_errno(PBMS pbms);
93
 
const char *pbms_error(PBMS pbms);
94
 
pbms_bool pbms_is_blob_reference(PBMS pbms, const char *ref);
95
 
pbms_bool pbms_get_blob_size(PBMS pbms, const char *ref, size_t *size);
96
 
 
97
 
/* Metadata related functions. */
98
 
pbms_bool pbms_add_metadata(PBMS pbms, const char *name, const char *value);
99
 
void pbms_clear_metadata(PBMS pbms, const char *name);  //If name is NULL all metadata associaed with the connection is removed.
100
 
unsigned int pbms_reset_metadata(PBMS pbms);                    //Resets the metadata cursor for downloaded metadata.
101
 
pbms_bool pbms_next_metadata(PBMS pbms, char *name, char *value, size_t *v_size);
102
 
pbms_bool pbms_get_metadata_value(PBMS pbms, const char *name, char *buffer, size_t *size);
103
 
 
104
 
pbms_bool pbms_get_md5_digest(PBMS pbms, char *md5_digest); 
105
 
 
106
 
pbms_bool pbms_put_data(PBMS pbms, const char *table, const char *checksum, char *ref, size_t size, const unsigned char *buffer);
107
 
pbms_bool pbms_put_data_cb(PBMS pbms, const char *table, const char *checksum, char *ref, size_t size, PBMS_READ_CALLBACK_FUNC cb, void *caller_data);
108
 
 
109
 
pbms_bool pbms_get_data(PBMS pbms, const char *ref, unsigned char *buffer, size_t buffer_size);
110
 
pbms_bool pbms_get_data_cb(PBMS pbms, const char *ref, PBMS_WRITE_CALLBACK_FUNC cb, void *caller_data);
111
 
 
112
 
pbms_bool pbms_get_data_range(PBMS pbms, const char *ref, size_t start_offset, size_t end_offset, unsigned char *buffer, size_t buffer_size, size_t *data_size);
113
 
pbms_bool pbms_get_data_range_cb(PBMS pbms, const char *ref, size_t start_offset, size_t end_offset, PBMS_WRITE_CALLBACK_FUNC cb, void *caller_data);
114
 
 
115
 
pbms_bool pbms_get_info(PBMS pbms, const char *ref);
116
 
 
117
 
#ifdef __cplusplus
118
 
}
119
 
#endif
120
 
#endif // __PBMSLIB_H__