Skip to content
This repository was archived by the owner on May 27, 2022. It is now read-only.

Commit 2331810

Browse files
committed
2 parents f910b69 + 5dfc221 commit 2331810

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

src/antidote_pb_codec.erl

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,9 @@
8484
| {static_update_objects, {Clock :: binary(), Properties :: list(), Updates :: [update()]}}
8585
| {static_read_objects, {Clock :: binary(), Properties :: list(), Objects :: [bound_object()]}}
8686
| {read_objects, {Objects :: [bound_object()], TxId :: binary()}}
87-
| {get_connection_descriptor, Descriptor :: binary()}.
87+
| {create_dc, NodeNames :: [node()]}
88+
| {get_connection_descriptor, Descriptor :: binary()}
89+
| {connect_to_dcs, Desriptors :: [binary()]}.
8890

8991
-type response() ::
9092
{error_response, {ErrorCode :: error_code(), Message :: binary()}}
@@ -192,7 +194,15 @@ encode_message({static_read_objects_response, {ok, Results, CommitTime}}) ->
192194
encode_message({read_objects_response, Resp}) ->
193195
encode_read_objects_response(Resp);
194196
encode_message({operation_response, Resp}) ->
195-
encode_operation_response(Resp).
197+
encode_operation_response(Resp);
198+
encode_message({get_connection_descriptor}) ->
199+
encode_get_connection_descriptor();
200+
encode_message({get_connection_descriptor_resp, Resp}) ->
201+
encode_get_connection_descriptor_resp(Resp);
202+
encode_message({create_dc, Nodes}) ->
203+
encode_create_dc(Nodes);
204+
encode_message({connect_to_dcs, Descriptors}) ->
205+
encode_connect_to_dcs(Descriptors).
196206

197207
-spec decode_message(sendable()) -> message().
198208
decode_message(#'ApbStartTransaction'{properties = Properties, timestamp = Clock}) ->
@@ -215,11 +225,13 @@ decode_message(#'ApbReadObjects'{boundobjects = Objects, transaction_descriptor
215225
{read_objects, {[decode_bound_object(O) || O <- Objects], binary_to_term(TxId)}};
216226

217227
decode_message(#'ApbCreateDC'{nodes = Nodes}) ->
218-
{create_dc, [list_to_atom(N) || N <- Nodes]};
228+
{create_dc, [binary_to_atom(N, utf8) || N <- Nodes]};
219229
decode_message(#'ApbGetConnectionDescriptor'{}) ->
220230
{get_connection_descriptor};
231+
decode_message(#'ApbGetConnectionDescriptorResp'{success = false, errorcode = E}) ->
232+
{get_connection_descriptor_resp, {error, decode_error_code(E)}};
221233
decode_message(#'ApbGetConnectionDescriptorResp'{descriptor = Descriptor}) ->
222-
{get_connection_descriptor, Descriptor};
234+
{get_connection_descriptor_resp, {ok, Descriptor}};
223235
decode_message(#'ApbConnectToDCs'{descriptors = Descriptors}) ->
224236
{connect_to_dcs, [binary_to_term(D) || D <- Descriptors]};
225237

@@ -494,8 +506,12 @@ decode_response(#'ApbStaticReadObjectsResp'{objects = Objects,
494506
{read_objects, Values} = decode_response(Objects),
495507
{commit_transaction, TimeStamp} = decode_response(CommitTime),
496508
{static_read_objects_resp, Values, TimeStamp};
509+
decode_response(#'ApbGetConnectionDescriptorResp'{success = false, errorcode = E}) ->
510+
{get_connection_descriptor_resp, {error, decode_error_code(E)}};
511+
decode_response(#'ApbGetConnectionDescriptorResp'{descriptor = Descriptor}) ->
512+
{get_connection_descriptor_resp, {ok, Descriptor}};
497513
decode_response(Other) ->
498-
erlang:error("Unexpected message: ~p", [Other]).
514+
erlang:error({"Unexpected message:", Other}).
499515

500516
%%%%%%%%%%%%%%%%%%%%%%
501517
%% Reading objects
@@ -783,7 +799,12 @@ decode_map_entry(#'ApbMapEntry'{key = KeyEnc, value = ValueEnc}) ->
783799
%% Cluster Management
784800

785801
encode_create_dc(Nodes) ->
786-
#'ApbCreateDC'{nodes = Nodes}.
802+
#'ApbCreateDC'{nodes = [if
803+
is_atom(N) -> atom_to_binary(N, utf8);
804+
is_list(N) -> list_to_binary(N);
805+
is_binary(N) -> N;
806+
true -> throw({invalid_node_value, N})
807+
end || N <- Nodes]}.
787808
decode_create_dc(#'ApbCreateDC'{nodes = Nodes}) ->
788809
Nodes.
789810

0 commit comments

Comments
 (0)