diff --git a/hiredis-client/ext/redis_client/hiredis/hiredis_connection.c b/hiredis-client/ext/redis_client/hiredis/hiredis_connection.c index cd40dd6..d3b1e5d 100644 --- a/hiredis-client/ext/redis_client/hiredis/hiredis_connection.c +++ b/hiredis-client/ext/redis_client/hiredis/hiredis_connection.c @@ -629,6 +629,14 @@ static VALUE hiredis_connected_p(VALUE self) { return Qtrue; } +static VALUE hiredis_feed(VALUE self, VALUE response) { + CONNECTION(self, connection); + ENSURE_CONNECTED(connection); + + int error = redisReaderFeed(connection->context->reader, RSTRING_PTR(response), RSTRING_LEN(response)); + return error == REDIS_OK ? Qtrue : Qfalse; +} + static VALUE hiredis_write(VALUE self, VALUE command) { Check_Type(command, T_ARRAY); @@ -929,6 +937,8 @@ RUBY_FUNC_EXPORTED void Init_hiredis_connection(void) { rb_define_private_method(rb_cHiredisConnection, "_reconnect", hiredis_reconnect, 2); rb_define_method(rb_cHiredisConnection, "connected?", hiredis_connected_p, 0); + rb_define_method(rb_cHiredisConnection, "feed", hiredis_feed, 1); + rb_define_private_method(rb_cHiredisConnection, "_write", hiredis_write, 1); rb_define_private_method(rb_cHiredisConnection, "_read", hiredis_read, 0); rb_define_private_method(rb_cHiredisConnection, "flush", hiredis_flush, 0);