Skip to content

Commit

Permalink
refine
Browse files Browse the repository at this point in the history
  • Loading branch information
ChinaXing committed Apr 1, 2015
1 parent 9984aa9 commit 5a3fe59
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 11 deletions.
2 changes: 1 addition & 1 deletion rebar.config
@@ -1 +1 @@
{erl_opts,[ debug_info ]}.
{erl_opts,[ debug_info ]}.
4 changes: 2 additions & 2 deletions src/packet_farm.erl
Expand Up @@ -53,7 +53,7 @@ parse_package(heartbeat, _ ) ->

get_packet_command(Packet) ->
try
<<_:48,Command:16>> = Packet,
<<_:48,Command:16,_/binary>> = Packet,
case Command of
?ROUTER_SHAKE_COMMAND_RESPONSE ->
auth;
Expand All @@ -65,7 +65,7 @@ get_packet_command(Packet) ->
{unknow, {command, Command}}
end
catch
_:_ -> {unkown, {command, parse_error}}
_:_ -> {unknow, {command, parse_error}}
end.


Expand Down
14 changes: 9 additions & 5 deletions src/router.erl
Expand Up @@ -10,7 +10,8 @@
-author("LambdaCat").

%% API
-export([start/7, start_router/5]).
%-export([start/7, start_router/5]).
-compile(export_all).
-include("package_constant.hrl").

start(Prefix, Index, Host, Port, BindIp, HeartbeatInterval, WaitTimeout) ->
Expand Down Expand Up @@ -49,12 +50,13 @@ start_router(Host, Port, BindIp, WaitTimeout, Logger) ->
binary,{active, true},
{send_timeout, WaitTimeout}], WaitTimeout),
Logger(info, "connected~n", []),
Pid = spawn_link(io_loop, Socket, Logger),
Pid = spawn_link(?MODULE, io_loop, [Socket, Logger]),
ok = gen_tcp:controlling_process(Socket,Pid),
{ok, Pid}.

%% IO 进程的主循环
io_loop(Socket, Logger) ->
io:format("hello, io_loop~n",[]),
receive
{tcp, Socket, Data} ->
case demultiplex(Data) of %% 解多路复用,分解到具体的业务进程处理
Expand All @@ -65,11 +67,13 @@ io_loop(Socket, Logger) ->
Logger(error, "cannot demultiplex response Data to biz Packet,~p~n",[Reason])
end;
{From, Type, Packet} ->
put("packet_type" ++ Type, From), %% save packet type owner / for later demultiplex
put("packet_type_" ++ Type, From), %% save packet type owner / for later demultiplex
From ! gen_tcp:send(Socket, Packet),
io_loop(Socket, Logger);
{From, exit} ->
From ! ok
From ! ok;
Other ->
Logger("unknow command ~p~n",[Other])
end.


Expand All @@ -80,7 +84,7 @@ demultiplex(Data) ->
{unknow, Reason} ->
{error, Reason};
Type ->
Target = get("packet_type" ++ Type),
Target = get("packet_type_" ++ Type),
{ok, Target}
end.

Expand Down
3 changes: 2 additions & 1 deletion src/router_auth.erl
Expand Up @@ -11,7 +11,8 @@
do_auth(IOPid, {Prefix, Index, WaitTimeout,Retry, Logger}) ->
Packet = packet_farm:build_package(auth, Prefix, Index,[]),
Start = lib_misc:get_timestamp_micro_seconds(),
case IOPid ! {self(), auth, Packet} of
IOPid ! {self(), auth, Packet},
receive
{error, Reason} ->
Logger(error, "send auth package failed : ~p ~n", [Reason]),
if
Expand Down
5 changes: 3 additions & 2 deletions src/router_heartbeat.erl
Expand Up @@ -15,7 +15,7 @@
%% 2. 调用者可以控制此心跳进程的退出
%% ---------------------------------------------------------
heart_beat_loop(IOPid, {Prefix, Index, WaitTimeout, HeartbeatInterval, Logger}) ->
HeartbeatExecutor = spawn(heart_beat_executor,IOPid, {Prefix, Index, WaitTimeout, Logger}),
HeartbeatExecutor = spawn(heart_beat_executor,[IOPid, {Prefix, Index, WaitTimeout, Logger}]),
Caller = self(),
Repeater = spawn(fun() ->
Ret = heart_beat_fix_rate(HeartbeatExecutor, HeartbeatInterval),
Expand Down Expand Up @@ -73,7 +73,8 @@ heart_beat_executor(IOPid, {Prefix, Index, WaitTimeout, Logger}) ->
do_heart_beat(IOPid, {Prefix, Index, WaitTimeout, Retry, Logger}) ->
Packet = packet_farm:build_package(heartbeat, Prefix, true, [200]),
Start = lib_misc:get_timestamp_micro_seconds(),
case IOPid ! {self(), heartbeat, Packet} of
IOPid ! {self(), heartbeat, Packet},
receive
{error, Reason} ->
Logger(error, "send heartbeat package failed : ~p ~n", [Reason]),
if
Expand Down

0 comments on commit 5a3fe59

Please sign in to comment.