fix
This commit is contained in:
parent
21e1f1f9cf
commit
332e3f8dc0
@ -22,10 +22,7 @@
|
||||
-define(SERVER, ?MODULE).
|
||||
|
||||
-record(state, {
|
||||
host :: string(),
|
||||
port :: integer(),
|
||||
socket :: undefined | ssl:sslsocket(),
|
||||
packet_id = 1
|
||||
transport_pid :: undefined | pid()
|
||||
}).
|
||||
|
||||
%%%===================================================================
|
||||
@ -48,13 +45,9 @@ start_link() ->
|
||||
{ok, State :: #state{}} | {ok, State :: #state{}, timeout() | hibernate} |
|
||||
{stop, Reason :: term()} | ignore).
|
||||
init([]) ->
|
||||
{ok, Props} = application:get_env(efka, tls_server),
|
||||
Host = proplists:get_value(host, Props),
|
||||
Port = proplists:get_value(port, Props),
|
||||
|
||||
erlang:start_timer(0, self(), create_connection),
|
||||
|
||||
{ok, #state{host = Host, port = Port}}.
|
||||
erlang:process_flag(trap_exit, true),
|
||||
{ok, TransportPid} = efka_transport:start_link(self()),
|
||||
{ok, #state{transport_pid = TransportPid}}.
|
||||
|
||||
%% @private
|
||||
%% @doc Handling call messages
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
%% API
|
||||
-export([start_link/1]).
|
||||
-export([auth_request/2, data/2, ping/2, inform/2, feedback_step/2, feedback_result/2, event/2, ai_event/2, response/2]).
|
||||
-export([auth_request/2, send/3, response/3]).
|
||||
|
||||
%% gen_server callbacks
|
||||
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
|
||||
@ -37,29 +37,11 @@
|
||||
auth_request(Pid, Timeout) when is_pid(Pid), is_integer(Timeout) ->
|
||||
gen_server:call(Pid, {auth_request, Timeout}).
|
||||
|
||||
data(Pid, Data = #data{}) when is_pid(Pid) ->
|
||||
gen_server:cast(Pid, {data, Data}).
|
||||
send(Pid, Method, Packet) when is_pid(Pid), is_integer(Method), is_binary(Packet) ->
|
||||
gen_server:cast(Pid, {send, Method, Packet}).
|
||||
|
||||
ping(Pid, Ping) when is_pid(Pid) ->
|
||||
gen_server:cast(Pid, {ping, Ping}).
|
||||
|
||||
inform(Pid, Inform) when is_pid(Pid) ->
|
||||
gen_server:cast(Pid, {inform, Inform}).
|
||||
|
||||
feedback_step(Pid, FeedbackStep) when is_pid(Pid) ->
|
||||
gen_server:cast(Pid, {feedback_step, FeedbackStep}).
|
||||
|
||||
feedback_result(Pid, FeedbackResult) when is_pid(Pid) ->
|
||||
gen_server:cast(Pid, {feedback_result, FeedbackResult}).
|
||||
|
||||
event(Pid, Event) when is_pid(Pid) ->
|
||||
gen_server:cast(Pid, {event, Event}).
|
||||
|
||||
ai_event(Pid, AIEvent) when is_pid(Pid) ->
|
||||
gen_server:cast(Pid, {ai_event, AIEvent}).
|
||||
|
||||
response(Pid, Response) when is_pid(Pid) ->
|
||||
gen_server:cast(Pid, {response, Response}).
|
||||
response(Pid, PacketId, Response) when is_pid(Pid), is_integer(PacketId) ->
|
||||
gen_server:cast(Pid, {response, PacketId, Response}).
|
||||
|
||||
%% @doc Spawns the server and registers the local name (unique)
|
||||
-spec(start_link(ParentPid :: pid()) ->
|
||||
@ -136,41 +118,12 @@ handle_call({auth_request, Timeout}, _From, State = #state{socket = Socket, pack
|
||||
{noreply, NewState :: #state{}} |
|
||||
{noreply, NewState :: #state{}, timeout() | hibernate} |
|
||||
{stop, Reason :: term(), NewState :: #state{}}).
|
||||
handle_cast({data, Data}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_REQUEST, 0:32, ?METHOD_DATA, Data/binary>>),
|
||||
handle_cast({send, Method, Packet}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_REQUEST, 0:32, Method, Packet/binary>>),
|
||||
{noreply, State};
|
||||
|
||||
handle_cast({ping, Ping}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_REQUEST, 0:32, ?METHOD_PING, Ping/binary>>),
|
||||
{noreply, State};
|
||||
|
||||
handle_cast({inform, Inform}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_REQUEST, 0:32, ?METHOD_INFORM, Inform/binary>>),
|
||||
{noreply, State};
|
||||
|
||||
handle_cast({feedback_step, FeedbackStep}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_REQUEST, 0:32, ?METHOD_FEEDBACK_STEP, FeedbackStep/binary>>),
|
||||
{noreply, State};
|
||||
|
||||
handle_cast({feedback_result, FeedbackResult}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_REQUEST, 0:32, ?METHOD_FEEDBACK_RESULT, FeedbackResult/binary>>),
|
||||
{noreply, State};
|
||||
|
||||
handle_cast({event, Event}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_REQUEST, 0:32, ?METHOD_EVENT, Event/binary>>),
|
||||
{noreply, State};
|
||||
|
||||
handle_cast({ai_event, AIEvent}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_REQUEST, 0:32, ?METHOD_AI_EVENT, AIEvent/binary>>),
|
||||
{noreply, State};
|
||||
|
||||
handle_cast({data, Data}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_REQUEST, 0:32, ?METHOD_DATA, Data/binary>>),
|
||||
{noreply, State};
|
||||
|
||||
%% todo
|
||||
handle_cast({response, Response}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_PUBLISH_RESPONSE, 0:32, Response/binary>>),
|
||||
handle_cast({response, PacketId, Response}, State = #state{socket = Socket}) ->
|
||||
ok = ssl:send(Socket, <<?PACKET_PUBLISH_RESPONSE, PacketId:32, Response/binary>>),
|
||||
{noreply, State}.
|
||||
|
||||
%% @private
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user