Packages
extreme
0.6.0
1.1.4
1.1.3
1.1.2
1.1.1
1.1.1-rc01
1.1.0
1.1.0-rc9
1.1.0-rc8
1.1.0-rc7
1.1.0-rc6
1.1.0-rc5
1.1.0-rc4
1.1.0-rc3
1.1.0-rc2
1.1.0-rc1
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
Elixir TCP client for EventStore.
Current section
Files
Jump to
Current section
Files
lib/request.ex
defmodule Extreme.Request do
alias Extreme.Tools
require Logger
def prepare(:ping=cmd) do
correlation_id = Tools.gen_uuid
res = <<Extreme.MessageResolver.encode_cmd(cmd), 0>> <> correlation_id
size = byte_size(res)
<<size::32-unsigned-little-integer>> <> res
end
def prepare(:heartbeat_response=cmd, correlation_id) do
res = <<Extreme.MessageResolver.encode_cmd(cmd), 0>> <> correlation_id
size = byte_size(res)
<<size::32-unsigned-little-integer>> <> res
end
def prepare(protobuf_msg, credentials) do
cmd = protobuf_msg.__struct__
data = protobuf_msg.__struct__.encode protobuf_msg
correlation_id = Tools.gen_uuid
message = to_binary(cmd, correlation_id, {credentials.user, credentials.pass}, data)
{message, correlation_id}
end
defp to_binary(cmd, correlation_id, {login, password}, data) do
login_len = byte_size(login)
pass_len = byte_size(password)
res = <<Extreme.MessageResolver.encode_cmd(cmd), 1>> <>
correlation_id <>
<<login_len::size(8)>>
res = res <> login <> <<pass_len::size(8)>> <> password <> data
size = byte_size(res)
<<size::32-unsigned-little-integer>> <> res
end
end