go...
This commit is contained in:
parent
f51b961ccc
commit
eed75c5802
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
-behaviour(gen_server).
|
-behaviour(gen_server).
|
||||||
|
|
||||||
-export([start_link/1, info/1]).
|
-export([start_link/1, info/1, go/2]).
|
||||||
|
|
||||||
-export([init/1,
|
-export([init/1,
|
||||||
handle_call/3,
|
handle_call/3,
|
||||||
|
@ -63,22 +63,20 @@
|
||||||
Frame = #mqtt_frame{ fixed = #mqtt_frame_fixed{ type = Type }}).
|
Frame = #mqtt_frame{ fixed = #mqtt_frame_fixed{ type = Type }}).
|
||||||
|
|
||||||
start_link(Sock) ->
|
start_link(Sock) ->
|
||||||
Res = gen_server:start_link(?MODULE, [Sock], []),
|
gen_server:start_link(?MODULE, [Sock], []).
|
||||||
?INFO("~p", [Res]).
|
|
||||||
|
|
||||||
info(Pid) ->
|
info(Pid) ->
|
||||||
gen_server:call(Pid, info).
|
gen_server:call(Pid, info).
|
||||||
|
|
||||||
|
go(Pid, Sock) ->
|
||||||
|
gen_server:call(Pid, {go, Sock}).
|
||||||
|
|
||||||
init([Sock]) ->
|
init([Sock]) ->
|
||||||
process_flag(trap_exit, true),
|
{ok, #state{socket = Sock}}.
|
||||||
esockd_client:ack(Sock),
|
|
||||||
%%TODO: Move to esockd...
|
handle_call({go, Sock}, _From, State=#state{socket = Sock}) ->
|
||||||
ok = throw_on_error(
|
|
||||||
inet_error, fun () -> emqtt_net:tune_buffer_size(Sock) end),
|
|
||||||
{ok, ConnStr} = emqtt_net:connection_string(Sock, inbound),
|
{ok, ConnStr} = emqtt_net:connection_string(Sock, inbound),
|
||||||
%FIXME: merge to registry
|
{reply, ok,
|
||||||
%%emqtt_client_monitor:mon(self()),
|
|
||||||
{ok,
|
|
||||||
control_throttle(
|
control_throttle(
|
||||||
#state{ socket = Sock,
|
#state{ socket = Sock,
|
||||||
conn_name = ConnStr,
|
conn_name = ConnStr,
|
||||||
|
@ -89,9 +87,7 @@ init([Sock]) ->
|
||||||
message_id = 1,
|
message_id = 1,
|
||||||
subtopics = [],
|
subtopics = [],
|
||||||
awaiting_ack = gb_trees:empty(),
|
awaiting_ack = gb_trees:empty(),
|
||||||
awaiting_rel = gb_trees:empty()})}.
|
awaiting_rel = gb_trees:empty()})};
|
||||||
|
|
||||||
%{ok, undefined, hibernate, {backoff, 1000, 1000, 10000}}.
|
|
||||||
|
|
||||||
handle_call(duplicate_id, _From, State=#state{conn_name=ConnName, client_id=ClientId}) ->
|
handle_call(duplicate_id, _From, State=#state{conn_name=ConnName, client_id=ClientId}) ->
|
||||||
?ERROR("Shutdown for duplicate clientid:~s, conn:~s", [ClientId, ConnName]),
|
?ERROR("Shutdown for duplicate clientid:~s, conn:~s", [ClientId, ConnName]),
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
-export([tcp_name/3, tcp_host/1, getaddr/2, port_to_listeners/1]).
|
-export([tcp_name/3, tcp_host/1, getaddr/2, port_to_listeners/1]).
|
||||||
|
|
||||||
-export([tune_buffer_size/1, connection_string/2]).
|
-export([connection_string/2]).
|
||||||
|
|
||||||
-include_lib("kernel/include/inet.hrl").
|
-include_lib("kernel/include/inet.hrl").
|
||||||
|
|
||||||
|
@ -154,13 +154,6 @@ tcp_name(Prefix, IPAddress, Port)
|
||||||
io_lib:format(
|
io_lib:format(
|
||||||
"~w_~s:~w", [Prefix, inet_parse:ntoa(IPAddress), Port]))).
|
"~w_~s:~w", [Prefix, inet_parse:ntoa(IPAddress), Port]))).
|
||||||
|
|
||||||
tune_buffer_size(Sock) ->
|
|
||||||
case getopts(Sock, [sndbuf, recbuf, buffer]) of
|
|
||||||
{ok, BufSizes} -> BufSz = lists:max([Sz || {_Opt, Sz} <- BufSizes]),
|
|
||||||
setopts(Sock, [{buffer, BufSz}]);
|
|
||||||
Err -> Err
|
|
||||||
end.
|
|
||||||
|
|
||||||
connection_string(Sock, Direction) ->
|
connection_string(Sock, Direction) ->
|
||||||
case socket_ends(Sock, Direction) of
|
case socket_ends(Sock, Direction) of
|
||||||
{ok, {FromAddress, FromPort, ToAddress, ToPort}} ->
|
{ok, {FromAddress, FromPort, ToAddress, ToPort}} ->
|
||||||
|
|
Loading…
Reference in New Issue