From ceb79026f3f6f21e7bc137397e18bd8dae137eb3 Mon Sep 17 00:00:00 2001 From: Daniel Barney Date: Fri, 17 Feb 2012 10:56:00 -0700 Subject: [PATCH 1/2] added in support for psubscribe --- src/redo.erl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/redo.erl b/src/redo.erl index 6d5db4e..747f818 100644 --- a/src/redo.erl +++ b/src/redo.erl @@ -28,7 +28,7 @@ handle_info/2, terminate/2, code_change/3]). -export([start_link/0, start_link/1, start_link/2, - cmd/1, cmd/2, cmd/3, subscribe/1, subscribe/2]). + cmd/1, cmd/2, cmd/3, subscribe/1, subscribe/2, psubscribe/1, psubscribe/2]). -record(state, {host, port, pass, db, sock, queue, subscriber, cancelled, acc, buffer}). @@ -106,6 +106,15 @@ subscribe(NameOrPid, Channel) -> Packet = redo_redis_proto:package(["SUBSCRIBE", Channel]), gen_server:call(NameOrPid, {subscribe, Packet}, 2000). +-spec psubscribe(list() | binary()) -> reference() | {error, term()}. +psubscribe(Channel) -> + subscribe(?MODULE, Channel). + +-spec psubscribe(atom() | pid(), list() | binary()) -> reference() | {error, term()}. +psubscribe(NameOrPid, Channel) -> + Packet = redo_redis_proto:package(["PSUBSCRIBE", Channel]), + gen_server:call(NameOrPid, {subscribe, Packet}, 2000). + %%==================================================================== %% gen_server callbacks %%==================================================================== From 472234a31576fac9c89c19e4c7f99ff67291eab9 Mon Sep 17 00:00:00 2001 From: Daniel Barney Date: Mon, 19 Mar 2012 12:15:26 -0600 Subject: [PATCH 2/2] fixed brpoplpush error with *-1 as response --- src/redo_redis_proto.erl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/redo_redis_proto.erl b/src/redo_redis_proto.erl index 624f91a..75f00db 100644 --- a/src/redo_redis_proto.erl +++ b/src/redo_redis_proto.erl @@ -146,6 +146,9 @@ read_line(<<>>, _Acc) -> read_line(<>, Acc) -> read_line(Rest, <>). +multi_bulk(_Acc, -1, Rest) -> + {ok, undefined, {raw, Rest}}; + multi_bulk(Acc, 0, Rest) -> {ok, lists:reverse(Acc), {raw, Rest}};