@@ -97,9 +97,9 @@ code_change(_OldVersion, State, _Extra) -> {ok, State}.
9797% %====================================================================
9898
9999extract_mapping (Config ) ->
100- Pid = proplists :get_value (pid , Config ),
100+ Id = proplists :get_value (id , Config ),
101101 Mods = proplists :get_value (modules , Config ),
102- lists :map (fun (X ) -> {X , Pid } end , Mods ).
102+ lists :map (fun (X ) -> {X , Id } end , Mods ).
103103
104104init_map (Configs ) ->
105105 lists :foldl (fun (X , Acc ) -> Acc ++ extract_mapping (X ) end , [], Configs ).
@@ -173,12 +173,17 @@ process_request(Request, State) ->
173173 {_Type , Mod , _Fun , _Args } = ActionTerm ,
174174 Pid = proplists :get_value (Mod , State # state .map ),
175175 case Pid of
176- undefined ->
176+ native ->
177177 logger :debug (" Dispatching to native module~n " , []),
178- process_native_request (Request , State );
179- ValidPid ->
178+ process_native_request (ActionTerm , Request , State );
179+ ValidPid when is_pid ( ValidPid ) ->
180180 logger :debug (" Found extern pid ~p~n " , [ValidPid ]),
181- process_extern_request (ValidPid , Request , State )
181+ process_extern_request (ValidPid , Request , State );
182+ undefined ->
183+ Sock = Request # request .sock ,
184+ gen_tcp :send (Sock , term_to_binary ({error })),
185+ ok = gen_tcp :close (Sock ),
186+ State
182187 end .
183188
184189close_if_cast (ActionTerm , Request ) ->
@@ -192,8 +197,12 @@ close_if_cast(ActionTerm, Request) ->
192197 ok
193198 end .
194199
195- process_native_request (_Request , State ) ->
196- State .
200+ process_native_request (ActionTerm , Request , State ) ->
201+ Count = State # state .count ,
202+ State2 = State # state {count = Count + 1 },
203+ logger :debug (" Count = ~p~n " , [Count + 1 ]),
204+ spawn (fun () -> native :process (ActionTerm , Request ) end ),
205+ State2 .
197206
198207process_extern_request (Pid , Request , State ) ->
199208 case queue :is_empty (State # state .pending ) of
0 commit comments