Kouhei Sutou
null+****@clear*****
Mon Mar 30 21:26:50 JST 2015
Kouhei Sutou 2015-03-30 21:26:50 +0900 (Mon, 30 Mar 2015) New Revision: 27596353493f220a6b151eeff026bfb5237bb7ff https://github.com/groonga/groonga/commit/27596353493f220a6b151eeff026bfb5237bb7ff Message: suggest: use msgpack_object_str Added files: lib/grn_msgpack.h Modified files: lib/grn_ctx_impl.h lib/sources.am src/suggest/groonga_suggest_httpd.c Modified: lib/grn_ctx_impl.h (+1 -12) =================================================================== --- lib/grn_ctx_impl.h 2015-03-30 21:18:01 +0900 (e68bb07) +++ lib/grn_ctx_impl.h 2015-03-30 21:26:50 +0900 (7b24018) @@ -26,18 +26,7 @@ # include "grn_com.h" #endif /* GRN_COM_H */ -#ifdef GRN_WITH_MESSAGE_PACK -# include <msgpack.h> -# if MSGPACK_VERSION_MAJOR < 1 -typedef unsigned int msgpack_size_t; -# define msgpack_pack_str(packer, size) msgpack_pack_raw(packer, size) -# define msgpack_pack_str_body(packer, value, size) \ - msgpack_pack_raw_body(packer, value, size) -# define MSGPACK_OBJECT_STR MSGPACK_OBJECT_RAW -# else /* MSGPACK_VERSION_MAJOR < 1 */ -typedef size_t msgpack_size_t; -# endif /* MSGPACK_VERSION_MAJOR < 1 */ -#endif /* GRN_WITH_MESSAGE_PACK */ +#include "grn_msgpack.h" #ifdef GRN_WITH_MRUBY # include <mruby.h> Added: lib/grn_msgpack.h (+38 -0) 100644 =================================================================== --- /dev/null +++ lib/grn_msgpack.h 2015-03-30 21:26:50 +0900 (793276e) @@ -0,0 +1,38 @@ +/* -*- c-basic-offset: 2 -*- */ +/* + Copyright(C) 2009-2015 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#ifndef GRN_MSGPACK_H +#define GRN_MSGPACK_H + +#ifdef GRN_WITH_MESSAGE_PACK +# include <msgpack.h> +# if MSGPACK_VERSION_MAJOR < 1 +typedef unsigned int msgpack_size_t; +# define msgpack_pack_str(packer, size) msgpack_pack_raw(packer, size) +# define msgpack_pack_str_body(packer, value, size) \ + msgpack_pack_raw_body(packer, value, size) +# define MSGPACK_OBJECT_STR MSGPACK_OBJECT_RAW +# define MSGPACK_STR_PTR(object) (object)->via.raw.ptr +# define MSGPACK_STR_SIZE(object) (object)->via.raw.size +# else /* MSGPACK_VERSION_MAJOR < 1 */ +typedef size_t msgpack_size_t; +# define MSGPACK_STR_PTR(object) (object)->via.str.ptr +# define MSGPACK_STR_SIZE(object) (object)->via.str.size +# endif /* MSGPACK_VERSION_MAJOR < 1 */ +#endif /* GRN_WITH_MESSAGE_PACK */ + +#endif /* GRN_MSGPACK_H */ Modified: lib/sources.am (+1 -0) =================================================================== --- lib/sources.am 2015-03-30 21:18:01 +0900 (58e6e30) +++ lib/sources.am 2015-03-30 21:26:50 +0900 (459b737) @@ -28,6 +28,7 @@ libgroonga_la_SOURCES = \ grn_logger.h \ mrb.c \ grn_mrb.h \ + grn_msgpack.h \ nfkc.c \ normalizer.c \ grn_normalizer.h \ Modified: src/suggest/groonga_suggest_httpd.c (+15 -9) =================================================================== --- src/suggest/groonga_suggest_httpd.c 2015-03-30 21:18:01 +0900 (7150780) +++ src/suggest/groonga_suggest_httpd.c 2015-03-30 21:26:50 +0900 (a00af53) @@ -17,6 +17,7 @@ /* groonga origin headers */ #include <grn_str.h> +#include <grn_msgpack.h> #include <stdio.h> #include <signal.h> @@ -38,7 +39,6 @@ #include "zmq_compatible.h" #include <event.h> #include <evhttp.h> -#include <msgpack.h> #include <groonga.h> #include <pthread.h> @@ -421,7 +421,7 @@ msgpack2json(msgpack_object *o, grn_ctx *ctx, grn_obj *buf) grn_text_ulltoa(ctx, buf, o->via.u64); break; case MSGPACK_OBJECT_STR: - grn_text_esc(ctx, buf, o->via.raw.ptr, o->via.raw.size); + grn_text_esc(ctx, buf, MSGPACK_STR_PTR(o), MSGPACK_STR_SIZE(o)); break; case MSGPACK_OBJECT_ARRAY: GRN_TEXT_PUTC(ctx, buf, '['); @@ -446,19 +446,25 @@ load_from_learner(msgpack_object *o, grn_ctx *ctx, grn_obj *cmd_buf) { if (o->type == MSGPACK_OBJECT_MAP && o->via.map.size) { msgpack_object_kv *kv; + msgpack_object *key; + msgpack_object *value; kv = &(o->via.map.ptr[0]); - if (kv->key.type == MSGPACK_OBJECT_STR && kv->key.via.raw.size == 6 && - !memcmp(kv->key.via.raw.ptr, CONST_STR_LEN("target"))) { - if (kv->val.type == MSGPACK_OBJECT_STR) { + key = &(kv->key); + value = &(kv->val); + if (key->type == MSGPACK_OBJECT_STR && MSGPACK_STR_SIZE(key) == 6 && + !memcmp(MSGPACK_STR_PTR(key), CONST_STR_LEN("target"))) { + if (value->type == MSGPACK_OBJECT_STR) { int i; GRN_BULK_REWIND(cmd_buf); GRN_TEXT_PUTS(ctx, cmd_buf, "load --table "); - GRN_TEXT_PUT(ctx, cmd_buf, kv->val.via.raw.ptr, kv->val.via.raw.size); + GRN_TEXT_PUT(ctx, cmd_buf, + MSGPACK_STR_PTR(value), + MSGPACK_STR_SIZE(value)); grn_ctx_send(ctx, GRN_TEXT_VALUE(cmd_buf), GRN_TEXT_LEN(cmd_buf), GRN_CTX_MORE); grn_ctx_send(ctx, CONST_STR_LEN("["), GRN_CTX_MORE); - if (kv->val.via.raw.size > 5) { - if (!memcmp(kv->val.via.raw.ptr, CONST_STR_LEN("item_")) || - !memcmp(kv->val.via.raw.ptr, CONST_STR_LEN("pair_"))) { + if (MSGPACK_STR_SIZE(value) > 5) { + if (!memcmp(MSGPACK_STR_PTR(value), CONST_STR_LEN("item_")) || + !memcmp(MSGPACK_STR_PTR(value), CONST_STR_LEN("pair_"))) { char delim = '{'; GRN_BULK_REWIND(cmd_buf); for (i = 1; i < o->via.map.size; i++) { -------------- next part -------------- HTML����������������������������... Download