Skip to content

Commit

Permalink
Replacing cJSON with our own code instead.
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicolas Noble committed Jan 22, 2015
1 parent 85eea08 commit 614c2bf
Show file tree
Hide file tree
Showing 25 changed files with 1,739 additions and 1,444 deletions.
15 changes: 10 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1365,6 +1365,8 @@ LIBGRPC_SRC = \
src/core/iomgr/tcp_posix.c \
src/core/iomgr/tcp_server_posix.c \
src/core/iomgr/time_averaged_stats.c \
src/core/json/json.c \
src/core/json/json-string.c \
src/core/statistics/census_init.c \
src/core/statistics/census_log.c \
src/core/statistics/census_rpc_stats.c \
Expand Down Expand Up @@ -1406,7 +1408,6 @@ LIBGRPC_SRC = \
src/core/transport/metadata.c \
src/core/transport/stream_op.c \
src/core/transport/transport.c \
third_party/cJSON/cJSON.c \

PUBLIC_HEADERS_C += \
include/grpc/grpc_security.h \
Expand Down Expand Up @@ -1483,6 +1484,8 @@ src/core/iomgr/tcp_client_posix.c: $(OPENSSL_DEP)
src/core/iomgr/tcp_posix.c: $(OPENSSL_DEP)
src/core/iomgr/tcp_server_posix.c: $(OPENSSL_DEP)
src/core/iomgr/time_averaged_stats.c: $(OPENSSL_DEP)
src/core/json/json.c: $(OPENSSL_DEP)
src/core/json/json-string.c: $(OPENSSL_DEP)
src/core/statistics/census_init.c: $(OPENSSL_DEP)
src/core/statistics/census_log.c: $(OPENSSL_DEP)
src/core/statistics/census_rpc_stats.c: $(OPENSSL_DEP)
Expand Down Expand Up @@ -1524,7 +1527,6 @@ src/core/transport/chttp2_transport.c: $(OPENSSL_DEP)
src/core/transport/metadata.c: $(OPENSSL_DEP)
src/core/transport/stream_op.c: $(OPENSSL_DEP)
src/core/transport/transport.c: $(OPENSSL_DEP)
third_party/cJSON/cJSON.c: $(OPENSSL_DEP)
endif

libs/$(CONFIG)/libgrpc.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGRPC_OBJS)
Expand Down Expand Up @@ -1618,6 +1620,8 @@ objs/$(CONFIG)/src/core/iomgr/tcp_client_posix.o:
objs/$(CONFIG)/src/core/iomgr/tcp_posix.o:
objs/$(CONFIG)/src/core/iomgr/tcp_server_posix.o:
objs/$(CONFIG)/src/core/iomgr/time_averaged_stats.o:
objs/$(CONFIG)/src/core/json/json.o:
objs/$(CONFIG)/src/core/json/json-string.o:
objs/$(CONFIG)/src/core/statistics/census_init.o:
objs/$(CONFIG)/src/core/statistics/census_log.o:
objs/$(CONFIG)/src/core/statistics/census_rpc_stats.o:
Expand Down Expand Up @@ -1659,7 +1663,6 @@ objs/$(CONFIG)/src/core/transport/chttp2_transport.o:
objs/$(CONFIG)/src/core/transport/metadata.o:
objs/$(CONFIG)/src/core/transport/stream_op.o:
objs/$(CONFIG)/src/core/transport/transport.o:
objs/$(CONFIG)/third_party/cJSON/cJSON.o:


LIBGRPC_TEST_UTIL_SRC = \
Expand Down Expand Up @@ -1773,6 +1776,8 @@ LIBGRPC_UNSECURE_SRC = \
src/core/iomgr/tcp_posix.c \
src/core/iomgr/tcp_server_posix.c \
src/core/iomgr/time_averaged_stats.c \
src/core/json/json.c \
src/core/json/json-string.c \
src/core/statistics/census_init.c \
src/core/statistics/census_log.c \
src/core/statistics/census_rpc_stats.c \
Expand Down Expand Up @@ -1814,7 +1819,6 @@ LIBGRPC_UNSECURE_SRC = \
src/core/transport/metadata.c \
src/core/transport/stream_op.c \
src/core/transport/transport.c \
third_party/cJSON/cJSON.c \

PUBLIC_HEADERS_C += \
include/grpc/byte_buffer.h \
Expand Down Expand Up @@ -1891,6 +1895,8 @@ objs/$(CONFIG)/src/core/iomgr/tcp_client_posix.o:
objs/$(CONFIG)/src/core/iomgr/tcp_posix.o:
objs/$(CONFIG)/src/core/iomgr/tcp_server_posix.o:
objs/$(CONFIG)/src/core/iomgr/time_averaged_stats.o:
objs/$(CONFIG)/src/core/json/json.o:
objs/$(CONFIG)/src/core/json/json-string.o:
objs/$(CONFIG)/src/core/statistics/census_init.o:
objs/$(CONFIG)/src/core/statistics/census_log.o:
objs/$(CONFIG)/src/core/statistics/census_rpc_stats.o:
Expand Down Expand Up @@ -1932,7 +1938,6 @@ objs/$(CONFIG)/src/core/transport/chttp2_transport.o:
objs/$(CONFIG)/src/core/transport/metadata.o:
objs/$(CONFIG)/src/core/transport/stream_op.o:
objs/$(CONFIG)/src/core/transport/transport.o:
objs/$(CONFIG)/third_party/cJSON/cJSON.o:


LIBGRPC++_SRC = \
Expand Down
5 changes: 3 additions & 2 deletions build.json
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@
"src/core/iomgr/tcp_posix.c",
"src/core/iomgr/tcp_server_posix.c",
"src/core/iomgr/time_averaged_stats.c",
"src/core/json/json.c",
"src/core/json/json-string.c",
"src/core/statistics/census_init.c",
"src/core/statistics/census_log.c",
"src/core/statistics/census_rpc_stats.c",
Expand Down Expand Up @@ -175,8 +177,7 @@
"src/core/transport/chttp2_transport.c",
"src/core/transport/metadata.c",
"src/core/transport/stream_op.c",
"src/core/transport/transport.c",
"third_party/cJSON/cJSON.c"
"src/core/transport/transport.c"
]
}
],
Expand Down
44 changes: 44 additions & 0 deletions src/core/json/json-defs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
*
* Copyright 2014, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

/* The various json types. "NONE" may only used on top-level. */
enum grpc_json_type_t {
GRPC_JSON_OBJECT,
GRPC_JSON_ARRAY,
GRPC_JSON_STRING,
GRPC_JSON_NUMBER,
GRPC_JSON_TRUE,
GRPC_JSON_FALSE,
GRPC_JSON_NULL,
GRPC_JSON_NONE
};
95 changes: 95 additions & 0 deletions src/core/json/json-reader-defs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/*
*
* Copyright 2014, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

/* the following need to be pre-defined:
* grpc_json_reader_opaque_t // A type you can use to keep track of your
* // own stuff.
* grpc_json_wchar_t // A type that can hold a unicode character
* // unsigned is good enough.
* grpc_json_string_t // A type that can hold a growable string.
*/

enum grpc_json_reader_state_t {
GRPC_JSON_STATE_OBJECT_KEY_BEGIN,
GRPC_JSON_STATE_OBJECT_KEY_STRING,
GRPC_JSON_STATE_OBJECT_KEY_END,
GRPC_JSON_STATE_VALUE_BEGIN,
GRPC_JSON_STATE_VALUE_STRING,
GRPC_JSON_STATE_STRING_ESCAPE,
GRPC_JSON_STATE_STRING_ESCAPE_U1,
GRPC_JSON_STATE_STRING_ESCAPE_U2,
GRPC_JSON_STATE_STRING_ESCAPE_U3,
GRPC_JSON_STATE_STRING_ESCAPE_U4,
GRPC_JSON_STATE_VALUE_NUMBER,
GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL,
GRPC_JSON_STATE_VALUE_NUMBER_ZERO,
GRPC_JSON_STATE_VALUE_NUMBER_DOT,
GRPC_JSON_STATE_VALUE_NUMBER_E,
GRPC_JSON_STATE_VALUE_NUMBER_EPM,
GRPC_JSON_STATE_VALUE_TRUE_R,
GRPC_JSON_STATE_VALUE_TRUE_U,
GRPC_JSON_STATE_VALUE_TRUE_E,
GRPC_JSON_STATE_VALUE_FALSE_A,
GRPC_JSON_STATE_VALUE_FALSE_L,
GRPC_JSON_STATE_VALUE_FALSE_S,
GRPC_JSON_STATE_VALUE_FALSE_E,
GRPC_JSON_STATE_VALUE_NULL_U,
GRPC_JSON_STATE_VALUE_NULL_L1,
GRPC_JSON_STATE_VALUE_NULL_L2,
GRPC_JSON_STATE_VALUE_END,
GRPC_JSON_STATE_END
};

struct grpc_json_reader_t {
/* You are responsible for the initialization of the following. */
grpc_json_reader_opaque_t opaque;

/* Everything down here is private,
and initialized by grpc_json_reader_init. */
int depth;
int in_object;
int in_array;
int escaped_string_was_key;
int container_just_begun;
grpc_json_wchar_t unicode;
enum grpc_json_reader_state_t state;
};

/* The return type of the parser. */
typedef enum {
GRPC_JSON_DONE, /* The parser finished successfully. */
GRPC_JSON_EAGAIN, /* The parser yields to get more data. */
GRPC_JSON_READ_ERROR, /* The parser passes through a read error. */
GRPC_JSON_PARSE_ERROR, /* The parser found an error in the json stream. */
GRPC_JSON_INTERNAL_ERROR /* The parser got an internal error. */
} grpc_json_reader_ret_t;
Loading

0 comments on commit 614c2bf

Please sign in to comment.