@@ -287,35 +287,46 @@ function _subscribe(conn::SubscriptionConnection, channels::Array)
287287end
288288
289289@enum CallbackType CallbackMsgStruct = 1 CallbackMsgData = 2
290+ @enum SubscriptionType SubscriptionPlain = 1 SubscriptionPattern = 2
291+
292+ function _register_callback (
293+ conn:: SubscriptionConnection ,
294+ channel:: AbstractString ,
295+ subscription_type:: SubscriptionType ,
296+ callback:: Function ,
297+ callback_type:: CallbackType ,
298+ )
299+ callbacks = subscription_type == SubscriptionPlain ? conn. callbacks :
300+ subscription_type == SubscriptionPattern ? conn. pcallbacks :
301+ error (" Invalid callback type" )
290302
291- function _register_callback (conn:: SubscriptionConnection , channel:: AbstractString , callback:: Function , callback_type:: CallbackType )
292303 if callback_type == CallbackMsgStruct
293- conn . callbacks[channel] = callback
304+ callbacks[channel] = callback
294305 elseif callback_type == CallbackMsgData
295- conn . callbacks[channel] = (msg_struct)-> callback (msg_struct. message)
306+ callbacks[channel] = (msg_struct)-> callback (msg_struct. message)
296307 end
297308end
298309
299310function subscribe (conn:: SubscriptionConnection , channel:: AbstractString , callback:: Function )
300- _register_callback (conn, channel, callback, CallbackMsgStruct)
311+ _register_callback (conn, channel, SubscriptionPlain, callback, CallbackMsgStruct)
301312 _subscribe (conn, [channel])
302313end
303314
304- function subscribe (conn:: SubscriptionConnection , subs:: Dict{AbstractString, Function} )
315+ function subscribe (conn:: SubscriptionConnection , subs:: Dict )
305316 for (channel, callback) in subs
306- _register_callback (conn, channel, callback, CallbackMsgStruct)
317+ _register_callback (conn, channel, SubscriptionPlain, callback, CallbackMsgStruct)
307318 end
308319 _subscribe (conn, collect (keys (subs)))
309320end
310321
311322function subscribe_data (conn:: SubscriptionConnection , channel:: AbstractString , callback:: Function )
312- _register_callback (conn, channel, callback, CallbackMsgData)
323+ _register_callback (conn, channel, SubscriptionPlain, callback, CallbackMsgData)
313324 _subscribe (conn, [channel])
314325end
315326
316- function subscribe_data (conn:: SubscriptionConnection , subs:: Dict{AbstractString, Function} )
327+ function subscribe_data (conn:: SubscriptionConnection , subs:: Dict )
317328 for (channel, callback) in subs
318- _register_callback (conn, channel, callback, CallbackMsgData)
329+ _register_callback (conn, channel, SubscriptionPlain, callback, CallbackMsgData)
319330 end
320331 _subscribe (conn, collect (keys (subs)))
321332end
@@ -341,15 +352,27 @@ function _psubscribe(conn::SubscriptionConnection, patterns::Array)
341352end
342353
343354function psubscribe (conn:: SubscriptionConnection , pattern:: AbstractString , callback:: Function )
344- conn. pcallbacks[ pattern] = callback
355+ _register_callback ( conn, pattern, SubscriptionPattern, callback, CallbackMsgStruct)
345356 _psubscribe (conn, [pattern])
346357end
347358
348- function psubscribe (conn:: SubscriptionConnection , subs:: Dict{AbstractString, Function} )
359+ function psubscribe (conn:: SubscriptionConnection , subs:: Dict )
349360 for (pattern, callback) in subs
350- conn. pcallbacks[ pattern] = callback
361+ _register_callback ( conn, pattern, SubscriptionPattern, callback, CallbackMsgStruct)
351362 end
352- _psubscribe (conn, collect (values (subs)))
363+ _psubscribe (conn, collect (keys (subs)))
364+ end
365+
366+ function psubscribe_data (conn:: SubscriptionConnection , pattern:: AbstractString , callback:: Function )
367+ _register_callback (conn, pattern, SubscriptionPattern, callback, CallbackMsgData)
368+ _psubscribe (conn, [pattern])
369+ end
370+
371+ function psubscribe_data (conn:: SubscriptionConnection , subs:: Dict )
372+ for (pattern, callback) in subs
373+ _register_callback (conn, pattern, SubscriptionPattern, callback, CallbackMsgData)
374+ end
375+ _psubscribe (conn, collect (keys (subs)))
353376end
354377
355378function punsubscribe (conn:: SubscriptionConnection , patterns... )
0 commit comments