Browse Source

Added functions to call in order to enable pgnotify.

Alexander Sosnovskiy 4 years ago
parent
commit
bb63926547
2 changed files with 12 additions and 1 deletions
  1. 8 1
      src/epgsql_pool.erl
  2. 4 0
      src/epgsql_pool_worker.erl

+ 8 - 1
src/epgsql_pool.erl

@@ -5,10 +5,13 @@
          query/2, query/3, query/4,
          squery/2, squery/3,
          transaction/2,
-         get_settings/0, set_settings/1
+         get_settings/0, set_settings/1,
+         get_worker/1,
+         set_notice/2
         ]).
 
 -include("epgsql_pool.hrl").
+-include("otp_types.hrl").
 
 -type(pool_name() :: binary() | string() | atom()).
 -export_type([pool_name/0]).
@@ -166,6 +169,10 @@ set_settings(Map) ->
                   end, all_keys()),
     ok.
 
+-spec set_notice(pid(), pid()) -> gs_call_reply().
+set_notice(Worker, Pid) ->
+    Timeout = application:get_env(epgsql_pool, query_timeout, 5000),
+    gen_server:call(Worker, {set_async_receiver, Pid}, Timeout).
 
 %%% inner functions
 

+ 4 - 0
src/epgsql_pool_worker.erl

@@ -50,6 +50,10 @@ handle_call(stop, _From, #state{connection = Connection,
     erlang:cancel_timer(NR_KA_Timer),
     {stop, normal, ok, State#state{connection = Connection2}};
 
+handle_call({set_async_receiver, ReceiverPid}, _From, #state{connection = #epgsql_connection{sock = Sock}} = State) ->
+    epgsql:set_notice_receiver(Sock, ReceiverPid),
+    {reply, ok, State};
+
 handle_call(_, _From, #state{connection = undefined} = State) ->
     {reply, {error, no_connection}, State};