/
riakc.hrl
211 lines (192 loc) · 10.5 KB
/
riakc.hrl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
%% -------------------------------------------------------------------
%%
%% riakc: protocol buffer client
%%
%% Copyright (c) 2007-2012 Basho Technologies, Inc. All Rights Reserved.
%%
%% This file is provided to you under the Apache License,
%% Version 2.0 (the "License"); you may not use this file
%% except in compliance with the License. You may obtain
%% a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing,
%% software distributed under the License is distributed on an
%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
%% KIND, either express or implied. See the License for the
%% specific language governing permissions and limitations
%% under the License.
%%
%% -------------------------------------------------------------------
-define(PROTO_MAJOR, 1).
-define(PROTO_MINOR, 0).
-define(DEFAULT_PB_TIMEOUT, 60000).
-define(FIRST_RECONNECT_INTERVAL, 100).
-define(MAX_RECONNECT_INTERVAL, 30000).
-type client_option() :: queue_if_disconnected |
{queue_if_disconnected, boolean()} |
{connect_timeout, pos_integer()} |
auto_reconnect |
{auto_reconnect, boolean()} |
keepalive |
{keepalive, boolean()}.
%% Options for starting or modifying the connection:
%% `queue_if_disconnected' when present or true will cause requests to
%% be queued while the connection is down. `auto_reconnect' when
%% present or true will automatically attempt to reconnect to the
%% server if the connection fails or is lost.
-type client_options() :: [client_option()]. %% A list of client options.
-type client_id() :: binary(). %% A client identifier, used for differentiating client processes
-type bucket() :: binary(). %% A bucket name.
-type key() :: binary(). %% A key name.
-type riakc_obj() :: riakc_obj:riakc_obj(). %% An object (bucket, key, metadata, value) stored in Riak.
-type req_id() :: non_neg_integer(). %% Request identifier for streaming requests.
-type server_prop() :: {node, binary()} | {server_version, binary()}. %% Server properties, as returned by the `get_server_info/1' call.
-type server_info() :: [server_prop()]. %% A response from the `get_server_info/1' call.
-type bucket_prop() :: {n_val, pos_integer()} | {allow_mult, boolean()} | {search_index, binary()}. %% Bucket property definitions.
-type bucket_props() :: [bucket_prop()]. %% Bucket properties
-type quorum() :: non_neg_integer() | one | all | quorum | default. %% A quorum setting for get/put/delete requests.
-type read_quorum() :: {r, ReadQuorum::quorum()} |
{pr, PrimaryReadQuorum::quorum()}. %% Valid quorum options for get requests.
-type write_quorum() :: {w, WriteQuorum::quorum()} |
{dw, DurableWriteQuorum::quorum()} |
{pw, PrimaryWriteQuorum::quorum()}. %% Valid quorum options for write requests.
-type delete_option() :: delete_quorum() |
{n_val, pos_integer()} |
{sloppy_quorum, boolean()}.
-type delete_quorum() :: read_quorum() |
write_quorum() |
{rw, ReadWriteQuorum::quorum()}. %% Valid quorum options for delete requests. Note that `rw' is deprecated in Riak 1.0 and later.
-type get_option() :: read_quorum() |
{if_modified, riakc_obj:vclock()} |
{notfound_ok, boolean()} |
{basic_quorum, boolean()} |
head | deletedvclock |
{n_val, pos_integer()} |
{sloppy_quorum, boolean()}.
%% Valid request options for get requests. When `if_modified' is
%% specified with a vclock, the request will fail if the object has
%% not changed. When `head' is specified, only the metadata will be
%% returned. When `deletedvclock' is specified, the vector clock of
%% the tombstone will be returned if the object has been recently
%% deleted.
-type put_option() :: write_quorum() | return_body | return_head | if_not_modified | if_none_match |
{n_val, pos_integer()} |
{sloppy_quorum, boolean()}.
%% Valid request options for put requests. `return_body' returns the
%% entire result of storing the object. `return_head' returns the
%% metadata from the result of storing the object. `if_not_modified'
%% will cause the request to fail if the local and remote vclocks do
%% not match. `if_none_match' will cause the request to fail if the
%% object already exists in Riak.
-type get_options() :: [get_option()]. %% A list of options for a get request.
-type put_options() :: [put_option()]. %% A list of options for a put request.
-type search_options() :: [search_option()]. %% A list of options for a search request.
-type delete_options() :: [delete_option()]. %% A list of options for a delete request.
-type mapred_queryterm() :: {map, mapred_funterm(), Arg::term(), Accumulate :: boolean()} |
{reduce, mapred_funterm(), Arg::term(),Accumulate :: boolean()} |
{link, Bucket :: riakc_obj:bucket(), Tag :: term(), Accumulate :: boolean()}.
%% A MapReduce phase specification. `map' functions operate on single
%% K/V objects. `reduce' functions operate across collections of
%% inputs from other phases. `link' is a special type of map phase
%% that matches links in the fetched objects. The `Arg' parameter will
%% be passed as the last argument to the phase function. The
%% `Accumulate' param determines whether results from this phase will
%% be returned to the client.
-type mapred_funterm() :: {modfun, Module :: atom(), Function :: atom()} |
{qfun, function()} |
{strfun, list() | binary()} |
{jsanon, binary() | {bucket(), key()}} |
{jsfun, binary()}.
%% A MapReduce phase function specification. `modfun' requires that
%% the compiled module be available on all Riak nodes. `qfun' will
%% only work from the shell (compiled fun() terms refer to compiled
%% code only). `strfun' contains the textual source of an Erlang
%% function but the functionality must be enabled on the Riak cluster.
%% `jsanon' either contains javascript code that will be evaluated
%% as an anonymous function, or a bucket-value pair, pointing
%% to a record stored in riak containing the source of an anonymous
%% javascript function. `jsfun' contains the name of a javascript
%% function, that when evaluated points to a built-in javascript function.
-type mapred_result() :: [term()].
%% The results of a MapReduce job.
-type mapred_inputs() :: [{bucket(), key()} | {{bucket(), key()}, term()}] |
{modfun, Module::atom(), Function::atom(), [term()]} |
bucket() |
{index, bucket(), Index::binary()|secondary_index_id(), key()|integer()} |
{index, bucket(), Index::binary()|secondary_index_id(), StartKey::key()|integer(), EndKey::key()|integer()}.
%% Inputs for a MapReduce job.
-type connection_failure() :: {Reason::term(), FailureCount::integer()}.
%% The reason for connection failure and how many times that type of
%% failure has occurred since startup.
-type timeout_name() :: ping_timeout | get_client_id_timeout |
set_client_id_timeout | get_server_info_timeout |
get_timeout | put_timeout | delete_timeout |
list_buckets_timeout | list_buckets_call_timeout |
list_keys_timeout | stream_list_keys_timeout |
stream_list_keys_call_timeout | get_bucket_timeout |
get_bucket_call_timeout | set_bucket_timeout |
set_bucket_call_timeout | mapred_timeout |
mapred_call_timeout | mapred_stream_timeout |
mapred_stream_call_timeout | mapred_bucket_timeout |
mapred_bucket_call_timeout | mapred_bucket_stream_call_timeout |
search_timeout | search_call_timeout |
timeout.
-type continuation() :: 'undefined' | binary().
-type secondary_index_id() :: {binary_index, string()} | {integer_index, string()}.
-type index_term() :: integer() | binary().
-type keys() :: [binary()] | 'undefined'.
-type index_terms() :: [{index_term(), binary()}] | 'undefined'.
-record(index_results_v1, {
keys :: keys(),
terms :: index_terms(),
continuation :: continuation()
}).
-define(INDEX_RESULTS, #index_results_v1).
-record(index_stream_result_v1, {
keys :: keys(),
terms :: index_terms()
}).
-define(INDEX_STREAM_RESULT, #index_stream_result_v1).
-record(index_body_results_v1, {
objects = [] :: [riakc_obj()],
continuation :: continuation()
}).
-define(INDEX_BODY_RESULTS, #index_body_results_v1).
-record(index_stream_body_result_v1, {
objects = [] :: [riakc_obj()]
}).
-define(INDEX_STREAM_BODY_RESULT, #index_stream_body_result_v1).
-type index_results() :: #index_results_v1{} | #index_body_results_v1{}.
-type index_stream_result() :: #index_stream_result_v1{} |
#index_stream_body_result_v1{}.
-type index_done() :: {'done', continuation()}.
-type search_option() ::
{rows, non_neg_integer()} | %% Limit rows
{start, non_neg_integer()} | %% Starting offset
{sort, binary()} | %% sort order
{filter, binary()} | %% Inline fields filtering query
{df, binary() } | %% Default field
{op, binary() } | %% Default op
{fl, [binary()]} | %% Return fields limit (for ids only, generally)
{presort, binary()}. %% Presor (key / score)
-type search_doc() :: [{binary(), binary()}].
-type search_maxscore() :: float().
-type search_number_found() :: non_neg_integer().
-record(search_results, {
docs :: [search_doc()], %% Result documents
max_score :: float(), %% Maximum score
num_found :: non_neg_integer() %% Number of results
}).
-type search_result() :: #search_results{}.
-type search_index() :: [{index, binary()} |
{schema, binary()}].
-type search_schema() :: [{name, binary()} |
{content, binary()}].
-record(preflist_item, {
partition :: non_neg_integer(),
node :: binary(),
primary :: boolean()
}).
-type preflist() :: [#preflist_item{}].