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