diff options
-rw-r--r-- | p11p-daemon/src/p11p_rpc.erl | 12 |
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 |