anchor.diff:  	%%
   	%% start new feeder loop
   	%%
  -	{ok, Connection, Channel} = init_fanout_exchange(ServerIp, Exchange),
  -	Pid = spawn(?MODULE, loop, [Connection, Channel, Exchange, Interval]),
  -	NewState = dict:store({ServerIp, Exchange}, Pid, NS),
  -	{reply, ok, NewState};
  +	Pid = spawn(?MODULE, start_loop, [ServerIp, ToClientEx, FromClientEx]),
  +	NewState = dict:store({ServerIp, ToClientEx, FromClientEx}, Pid, NS),
  +	{reply, ok, NewState}.
   
  
positive.code: -export([start_link/0]).
  -export([terminate/2]).
  -export([init/1, handle_call/3]).
  -export([loop/4]).
  
  start_link() ->
  	gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
  
  init(_Args) ->
  	{ok, []}.
  
  %%
  %% APIs
  %%
  start_service(ServerIp, Exchange) ->
  	Reply = gen_server:call(?MODULE, {stop_feed, ServerIp, Exchange}).
  
  %%
  %% Internal use.
  %%
  
  start_service(_Argv) ->
      InboundExchange = <<"xin">>,
      OutboundExchange = <<"xout">>,
      
      % コネクション開く
      {ok, Connection} =
  
negative.code: 
  
  loop(ChOut, OutboundExchange) ->
  	%% 購読中は#amqp_msgでメッセージが飛んでくる。
  	receive
  		{#'basic.deliver'{}, #amqp_msg{payload = Body}} ->
  			io:format(" [x] ~p~n", [Body]),
  
  			Message = <<"info: Hello World!">>,
  			% エクスチェンジにメッセージ送信。
  			amqp_channel:cast(ChOut,
  			#'basic.publish'{exchange = OutboundExchange},
  			#amqp_msg{payload = Message}),
  			io:format(" [x] Sent ~p~n", [Message]),
  
  			loop(ChOut, OutboundExchange);
  
  		"stop" -> ok 
  	end.
  
  
  %% gen_server behaviour %%        
  terminate(Reason, State) ->
  	ok.
  
  handle_call({start_service, ServerIp, ToClientEx, FromClientEx}, From, State) ->
  
  	%%
  	%% check existing process
  	%%
  	Value = dict:find({ServerIp, ToClientEx, FromClientEx}, State),
  	NS = case Value of
  		ExistingPid when is_pid(ExistingPid) ->
  			ExistingPid ! "stop",
  			dict:erase({ServerIp, ToClientEx, FromClientEx}, State);
  		_ ->
  			State
  	end,
  