summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--p11p-daemon/src/p11p_rpc.erl12
1 files changed, 10 insertions, 2 deletions
diff --git a/p11p-daemon/src/p11p_rpc.erl b/p11p-daemon/src/p11p_rpc.erl
index d29f783..8292ccf 100644
--- a/p11p-daemon/src/p11p_rpc.erl
+++ b/p11p-daemon/src/p11p_rpc.erl
@@ -40,8 +40,16 @@ parse(#p11rpc_msg{buffer = Buf} = M, Data) when M#p11rpc_msg.state == data ->
end.
-spec serialise(p11rpc_msg()) -> binary().
-serialise(_M) ->
- <<"fixme">>.
+serialise(M) when M#p11rpc_msg.state == done,
+ M#p11rpc_msg.call_code > -1,
+ M#p11rpc_msg.opt_len > -1,
+ M#p11rpc_msg.data_len > -1 ->
+ CallCode = M#p11rpc_msg.call_code,
+ OptLen = M#p11rpc_msg.opt_len,
+ DataLen = M#p11rpc_msg.data_len,
+ Options = M#p11rpc_msg.options,
+ Data = M#p11rpc_msg.data,
+ <<CallCode:32/integer, OptLen:32/integer, DataLen:32/integer, Options/binary, Data/binary>>.
%% Private