[Groonga-commit] groonga/groonga at 2759635 [master] suggest: use msgpack_object_str

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index