protobuf 2.2.5-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -0
- data/.travis.yml +9 -0
- data/.yardopts +5 -0
- data/Gemfile +3 -0
- data/README.md +316 -0
- data/Rakefile +29 -0
- data/UPGRADING.md +60 -0
- data/bin/rpc_server +5 -0
- data/bin/rprotoc +62 -0
- data/examples/addressbook.pb.rb +55 -0
- data/examples/addressbook.proto +24 -0
- data/examples/reading_a_message.rb +32 -0
- data/examples/writing_a_message.rb +46 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/code_generator.h +142 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/command_line_interface.h +318 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum.h +99 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum_field.h +103 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_extension.h +85 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_field.h +167 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_file.h +98 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_generator.h +72 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_helpers.h +159 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message.h +170 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message_field.h +102 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +103 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_service.h +118 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_string_field.h +104 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.h +2721 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/importer.h +303 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum.h +84 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum_field.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_extension.h +77 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_field.h +108 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_file.h +101 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_generator.h +72 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_helpers.h +213 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message.h +109 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message_field.h +134 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_primitive_field.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_service.h +113 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_string_field.h +120 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/mock_code_generator.h +113 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/package_info.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/parser.h +434 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.h +73 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.pb.h +790 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/python/python_generator.h +156 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/subprocess.h +108 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/zip_writer.h +93 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.h +1367 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.pb.h +5223 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor_database.h +366 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/dynamic_message.h +136 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/extension_set.h +904 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_reflection.h +424 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_util.h +82 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream.h +1102 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream_inl.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/gzip_stream.h +207 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/package_info.h +54 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/printer.h +136 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/tokenizer.h +313 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream.h +238 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl.h +357 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl_lite.h +340 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/message.h +692 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/message_lite.h +239 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/package_info.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/reflection_ops.h +80 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/repeated_field.h +1295 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/service.h +291 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/common.h +1211 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/hash.h +220 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/map-util.h +119 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/once.h +123 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/stl_util-inl.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/strutil.h +457 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/substitute.h +170 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/test_util.h +174 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/test_util_lite.h +101 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/testing/file.h +83 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/testing/googletest.h +98 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/text_format.h +285 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest.pb.h +11915 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_custom_options.pb.h +2895 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_embed_optimize_for.pb.h +211 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_empty.pb.h +56 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import.pb.h +188 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import_lite.pb.h +151 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite.pb.h +4752 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite_imports_nonlite.pb.h +150 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_mset.pb.h +816 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_no_generic_services.pb.h +197 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_optimize_for.pb.h +403 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unknown_field_set.h +268 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format.h +304 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite.h +620 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite_inl.h +774 -0
- data/ext/ruby_generator/Makefile +10 -0
- data/ext/ruby_generator/RubyGenerator.cpp +450 -0
- data/ext/ruby_generator/RubyGenerator.h +199 -0
- data/ext/ruby_generator/extconf.rb +36 -0
- data/ext/ruby_generator/protoc-ruby +0 -0
- data/lib/protobuf/cli.rb +188 -0
- data/lib/protobuf/enum.rb +58 -0
- data/lib/protobuf/enum_value.rb +59 -0
- data/lib/protobuf/evented.rb +22 -0
- data/lib/protobuf/exceptions.rb +11 -0
- data/lib/protobuf/ext/eventmachine.rb +14 -0
- data/lib/protobuf/field/base_field.rb +240 -0
- data/lib/protobuf/field/bool_field.rb +36 -0
- data/lib/protobuf/field/bytes_field.rb +38 -0
- data/lib/protobuf/field/double_field.rb +19 -0
- data/lib/protobuf/field/enum_field.rb +50 -0
- data/lib/protobuf/field/extension_fields.rb +32 -0
- data/lib/protobuf/field/field_array.rb +65 -0
- data/lib/protobuf/field/fixed32_field.rb +19 -0
- data/lib/protobuf/field/fixed64_field.rb +22 -0
- data/lib/protobuf/field/float_field.rb +31 -0
- data/lib/protobuf/field/int32_field.rb +12 -0
- data/lib/protobuf/field/int64_field.rb +12 -0
- data/lib/protobuf/field/integer_field.rb +19 -0
- data/lib/protobuf/field/message_field.rb +53 -0
- data/lib/protobuf/field/sfixed32_field.rb +21 -0
- data/lib/protobuf/field/sfixed64_field.rb +24 -0
- data/lib/protobuf/field/signed_integer_field.rb +23 -0
- data/lib/protobuf/field/sint32_field.rb +12 -0
- data/lib/protobuf/field/sint64_field.rb +12 -0
- data/lib/protobuf/field/string_field.rb +14 -0
- data/lib/protobuf/field/uint32_field.rb +12 -0
- data/lib/protobuf/field/uint64_field.rb +12 -0
- data/lib/protobuf/field/varint_field.rb +61 -0
- data/lib/protobuf/field.rb +57 -0
- data/lib/protobuf/logger.rb +86 -0
- data/lib/protobuf/message/decoder.rb +83 -0
- data/lib/protobuf/message/encoder.rb +48 -0
- data/lib/protobuf/message/extend.rb +8 -0
- data/lib/protobuf/message/message.rb +1 -0
- data/lib/protobuf/message.rb +320 -0
- data/lib/protobuf/rpc/buffer.rb +79 -0
- data/lib/protobuf/rpc/client.rb +166 -0
- data/lib/protobuf/rpc/connector.rb +19 -0
- data/lib/protobuf/rpc/connectors/base.rb +38 -0
- data/lib/protobuf/rpc/connectors/common.rb +156 -0
- data/lib/protobuf/rpc/connectors/em_client.rb +84 -0
- data/lib/protobuf/rpc/connectors/eventmachine.rb +87 -0
- data/lib/protobuf/rpc/connectors/socket.rb +73 -0
- data/lib/protobuf/rpc/connectors/zmq.rb +69 -0
- data/lib/protobuf/rpc/error/client_error.rb +31 -0
- data/lib/protobuf/rpc/error/server_error.rb +43 -0
- data/lib/protobuf/rpc/error.rb +25 -0
- data/lib/protobuf/rpc/rpc.pb.rb +118 -0
- data/lib/protobuf/rpc/server.rb +89 -0
- data/lib/protobuf/rpc/servers/evented/server.rb +41 -0
- data/lib/protobuf/rpc/servers/evented_runner.rb +21 -0
- data/lib/protobuf/rpc/servers/socket/server.rb +111 -0
- data/lib/protobuf/rpc/servers/socket/worker.rb +66 -0
- data/lib/protobuf/rpc/servers/socket_runner.rb +27 -0
- data/lib/protobuf/rpc/servers/zmq/broker.rb +87 -0
- data/lib/protobuf/rpc/servers/zmq/server.rb +50 -0
- data/lib/protobuf/rpc/servers/zmq/util.rb +27 -0
- data/lib/protobuf/rpc/servers/zmq/worker.rb +60 -0
- data/lib/protobuf/rpc/servers/zmq_runner.rb +25 -0
- data/lib/protobuf/rpc/service.rb +173 -0
- data/lib/protobuf/rpc/service_dispatcher.rb +130 -0
- data/lib/protobuf/rpc/service_filters.rb +267 -0
- data/lib/protobuf/rpc/stat.rb +83 -0
- data/lib/protobuf/socket.rb +22 -0
- data/lib/protobuf/version.rb +4 -0
- data/lib/protobuf/wire_type.rb +10 -0
- data/lib/protobuf/zmq.rb +21 -0
- data/lib/protobuf.rb +86 -0
- data/proto/rpc.pb.rb +48 -0
- data/proto/rpc.proto +73 -0
- data/protobuf.gemspec +44 -0
- data/spec/benchmark/tasks.rb +179 -0
- data/spec/functional/embedded_service_spec.rb +7 -0
- data/spec/functional/evented_server_spec.rb +64 -0
- data/spec/functional/socket_server_spec.rb +58 -0
- data/spec/functional/zmq_server_spec.rb +58 -0
- data/spec/lib/protobuf/cli_spec.rb +212 -0
- data/spec/lib/protobuf/enum_spec.rb +98 -0
- data/spec/lib/protobuf/enum_value_spec.rb +15 -0
- data/spec/lib/protobuf/logger_spec.rb +131 -0
- data/spec/lib/protobuf/message/encoder_spec.rb +19 -0
- data/spec/lib/protobuf/message_spec.rb +209 -0
- data/spec/lib/protobuf/rpc/client_spec.rb +158 -0
- data/spec/lib/protobuf/rpc/connector_spec.rb +32 -0
- data/spec/lib/protobuf/rpc/connectors/base_spec.rb +50 -0
- data/spec/lib/protobuf/rpc/connectors/common_spec.rb +128 -0
- data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +36 -0
- data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +22 -0
- data/spec/lib/protobuf/rpc/servers/evented_server_spec.rb +18 -0
- data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +43 -0
- data/spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb +35 -0
- data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +41 -0
- data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +45 -0
- data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +44 -0
- data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +116 -0
- data/spec/lib/protobuf/rpc/service_filters_spec.rb +451 -0
- data/spec/lib/protobuf/rpc/service_spec.rb +165 -0
- data/spec/lib/protobuf_spec.rb +62 -0
- data/spec/spec_helper.rb +51 -0
- data/spec/support/all.rb +6 -0
- data/spec/support/server.rb +101 -0
- data/spec/support/test/enum.pb.rb +34 -0
- data/spec/support/test/enum.proto +12 -0
- data/spec/support/test/resource.pb.rb +58 -0
- data/spec/support/test/resource.proto +31 -0
- data/spec/support/test/resource_service.rb +14 -0
- data/spec/support/test_app_file.rb +2 -0
- data/spec/support/tolerance_matcher.rb +40 -0
- data/test/data/data.bin +3 -0
- data/test/data/data_source.py +14 -0
- data/test/data/types.bin +0 -0
- data/test/data/types_source.py +22 -0
- data/test/data/unk.png +0 -0
- data/test/proto/addressbook.pb.rb +66 -0
- data/test/proto/addressbook.proto +33 -0
- data/test/proto/addressbook_base.pb.rb +58 -0
- data/test/proto/addressbook_base.proto +26 -0
- data/test/proto/addressbook_ext.pb.rb +20 -0
- data/test/proto/addressbook_ext.proto +6 -0
- data/test/proto/collision.pb.rb +17 -0
- data/test/proto/collision.proto +5 -0
- data/test/proto/ext_collision.pb.rb +24 -0
- data/test/proto/ext_collision.proto +8 -0
- data/test/proto/ext_range.pb.rb +22 -0
- data/test/proto/ext_range.proto +7 -0
- data/test/proto/float_default.proto +10 -0
- data/test/proto/lowercase.pb.rb +30 -0
- data/test/proto/lowercase.proto +9 -0
- data/test/proto/merge.pb.rb +39 -0
- data/test/proto/merge.proto +15 -0
- data/test/proto/nested.pb.rb +30 -0
- data/test/proto/nested.proto +9 -0
- data/test/proto/optional_field.pb.rb +35 -0
- data/test/proto/optional_field.proto +12 -0
- data/test/proto/packed.pb.rb +22 -0
- data/test/proto/packed.proto +6 -0
- data/test/proto/rpc.proto +6 -0
- data/test/proto/types.pb.rb +84 -0
- data/test/proto/types.proto +37 -0
- data/test/test_addressbook.rb +56 -0
- data/test/test_enum_value.rb +41 -0
- data/test/test_extension.rb +36 -0
- data/test/test_lowercase.rb +11 -0
- data/test/test_message.rb +128 -0
- data/test/test_optional_field.rb +103 -0
- data/test/test_packed_field.rb +40 -0
- data/test/test_parse.rb +15 -0
- data/test/test_repeated_types.rb +132 -0
- data/test/test_serialize.rb +61 -0
- data/test/test_standard_message.rb +96 -0
- data/test/test_types.rb +226 -0
- metadata +461 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Protocol Buffers - Google's data interchange format
|
|
2
|
+
// Copyright 2008 Google Inc. All rights reserved.
|
|
3
|
+
// http://code.google.com/p/protobuf/
|
|
4
|
+
//
|
|
5
|
+
// Redistribution and use in source and binary forms, with or without
|
|
6
|
+
// modification, are permitted provided that the following conditions are
|
|
7
|
+
// met:
|
|
8
|
+
//
|
|
9
|
+
// * Redistributions of source code must retain the above copyright
|
|
10
|
+
// notice, this list of conditions and the following disclaimer.
|
|
11
|
+
// * Redistributions in binary form must reproduce the above
|
|
12
|
+
// copyright notice, this list of conditions and the following disclaimer
|
|
13
|
+
// in the documentation and/or other materials provided with the
|
|
14
|
+
// distribution.
|
|
15
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
16
|
+
// contributors may be used to endorse or promote products derived from
|
|
17
|
+
// this software without specific prior written permission.
|
|
18
|
+
//
|
|
19
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
|
|
31
|
+
// Author: jasonh@google.com (Jason Hsueh)
|
|
32
|
+
//
|
|
33
|
+
// Implements methods of coded_stream.h that need to be inlined for performance
|
|
34
|
+
// reasons, but should not be defined in a public header.
|
|
35
|
+
|
|
36
|
+
#ifndef GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__
|
|
37
|
+
#define GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__
|
|
38
|
+
|
|
39
|
+
#include <google/protobuf/io/coded_stream.h>
|
|
40
|
+
#include <string>
|
|
41
|
+
#include <google/protobuf/stubs/stl_util-inl.h>
|
|
42
|
+
|
|
43
|
+
namespace google {
|
|
44
|
+
namespace protobuf {
|
|
45
|
+
namespace io {
|
|
46
|
+
|
|
47
|
+
inline bool CodedInputStream::InternalReadStringInline(string* buffer,
|
|
48
|
+
int size) {
|
|
49
|
+
if (size < 0) return false; // security: size is often user-supplied
|
|
50
|
+
|
|
51
|
+
if (BufferSize() >= size) {
|
|
52
|
+
STLStringResizeUninitialized(buffer, size);
|
|
53
|
+
memcpy(string_as_array(buffer), buffer_, size);
|
|
54
|
+
Advance(size);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return ReadStringFallback(buffer, size);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
} // namespace io
|
|
62
|
+
} // namespace protobuf
|
|
63
|
+
} // namespace google
|
|
64
|
+
#endif // GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
// Protocol Buffers - Google's data interchange format
|
|
2
|
+
// Copyright 2008 Google Inc. All rights reserved.
|
|
3
|
+
// http://code.google.com/p/protobuf/
|
|
4
|
+
//
|
|
5
|
+
// Redistribution and use in source and binary forms, with or without
|
|
6
|
+
// modification, are permitted provided that the following conditions are
|
|
7
|
+
// met:
|
|
8
|
+
//
|
|
9
|
+
// * Redistributions of source code must retain the above copyright
|
|
10
|
+
// notice, this list of conditions and the following disclaimer.
|
|
11
|
+
// * Redistributions in binary form must reproduce the above
|
|
12
|
+
// copyright notice, this list of conditions and the following disclaimer
|
|
13
|
+
// in the documentation and/or other materials provided with the
|
|
14
|
+
// distribution.
|
|
15
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
16
|
+
// contributors may be used to endorse or promote products derived from
|
|
17
|
+
// this software without specific prior written permission.
|
|
18
|
+
//
|
|
19
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
|
|
31
|
+
// Author: brianolson@google.com (Brian Olson)
|
|
32
|
+
//
|
|
33
|
+
// This file contains the definition for classes GzipInputStream and
|
|
34
|
+
// GzipOutputStream.
|
|
35
|
+
//
|
|
36
|
+
// GzipInputStream decompresses data from an underlying
|
|
37
|
+
// ZeroCopyInputStream and provides the decompressed data as a
|
|
38
|
+
// ZeroCopyInputStream.
|
|
39
|
+
//
|
|
40
|
+
// GzipOutputStream is an ZeroCopyOutputStream that compresses data to
|
|
41
|
+
// an underlying ZeroCopyOutputStream.
|
|
42
|
+
|
|
43
|
+
#ifndef GOOGLE_PROTOBUF_IO_GZIP_STREAM_H__
|
|
44
|
+
#define GOOGLE_PROTOBUF_IO_GZIP_STREAM_H__
|
|
45
|
+
|
|
46
|
+
#include <zlib.h>
|
|
47
|
+
|
|
48
|
+
#include <google/protobuf/io/zero_copy_stream.h>
|
|
49
|
+
|
|
50
|
+
namespace google {
|
|
51
|
+
namespace protobuf {
|
|
52
|
+
namespace io {
|
|
53
|
+
|
|
54
|
+
// A ZeroCopyInputStream that reads compressed data through zlib
|
|
55
|
+
class LIBPROTOBUF_EXPORT GzipInputStream : public ZeroCopyInputStream {
|
|
56
|
+
public:
|
|
57
|
+
// Format key for constructor
|
|
58
|
+
enum Format {
|
|
59
|
+
// zlib will autodetect gzip header or deflate stream
|
|
60
|
+
AUTO = 0,
|
|
61
|
+
|
|
62
|
+
// GZIP streams have some extra header data for file attributes.
|
|
63
|
+
GZIP = 1,
|
|
64
|
+
|
|
65
|
+
// Simpler zlib stream format.
|
|
66
|
+
ZLIB = 2,
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// buffer_size and format may be -1 for default of 64kB and GZIP format
|
|
70
|
+
explicit GzipInputStream(
|
|
71
|
+
ZeroCopyInputStream* sub_stream,
|
|
72
|
+
Format format = AUTO,
|
|
73
|
+
int buffer_size = -1);
|
|
74
|
+
virtual ~GzipInputStream();
|
|
75
|
+
|
|
76
|
+
// Return last error message or NULL if no error.
|
|
77
|
+
inline const char* ZlibErrorMessage() const {
|
|
78
|
+
return zcontext_.msg;
|
|
79
|
+
}
|
|
80
|
+
inline int ZlibErrorCode() const {
|
|
81
|
+
return zerror_;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// implements ZeroCopyInputStream ----------------------------------
|
|
85
|
+
bool Next(const void** data, int* size);
|
|
86
|
+
void BackUp(int count);
|
|
87
|
+
bool Skip(int count);
|
|
88
|
+
int64 ByteCount() const;
|
|
89
|
+
|
|
90
|
+
private:
|
|
91
|
+
Format format_;
|
|
92
|
+
|
|
93
|
+
ZeroCopyInputStream* sub_stream_;
|
|
94
|
+
|
|
95
|
+
z_stream zcontext_;
|
|
96
|
+
int zerror_;
|
|
97
|
+
|
|
98
|
+
void* output_buffer_;
|
|
99
|
+
void* output_position_;
|
|
100
|
+
size_t output_buffer_length_;
|
|
101
|
+
|
|
102
|
+
int Inflate(int flush);
|
|
103
|
+
void DoNextOutput(const void** data, int* size);
|
|
104
|
+
|
|
105
|
+
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(GzipInputStream);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class LIBPROTOBUF_EXPORT GzipOutputStream : public ZeroCopyOutputStream {
|
|
110
|
+
public:
|
|
111
|
+
// Format key for constructor
|
|
112
|
+
enum Format {
|
|
113
|
+
// GZIP streams have some extra header data for file attributes.
|
|
114
|
+
GZIP = 1,
|
|
115
|
+
|
|
116
|
+
// Simpler zlib stream format.
|
|
117
|
+
ZLIB = 2,
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
struct Options {
|
|
121
|
+
// Defaults to GZIP.
|
|
122
|
+
Format format;
|
|
123
|
+
|
|
124
|
+
// What size buffer to use internally. Defaults to 64kB.
|
|
125
|
+
int buffer_size;
|
|
126
|
+
|
|
127
|
+
// A number between 0 and 9, where 0 is no compression and 9 is best
|
|
128
|
+
// compression. Defaults to Z_DEFAULT_COMPRESSION (see zlib.h).
|
|
129
|
+
int compression_level;
|
|
130
|
+
|
|
131
|
+
// Defaults to Z_DEFAULT_STRATEGY. Can also be set to Z_FILTERED,
|
|
132
|
+
// Z_HUFFMAN_ONLY, or Z_RLE. See the documentation for deflateInit2 in
|
|
133
|
+
// zlib.h for definitions of these constants.
|
|
134
|
+
int compression_strategy;
|
|
135
|
+
|
|
136
|
+
Options(); // Initializes with default values.
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
// Create a GzipOutputStream with default options.
|
|
140
|
+
explicit GzipOutputStream(ZeroCopyOutputStream* sub_stream);
|
|
141
|
+
|
|
142
|
+
// Create a GzipOutputStream with the given options.
|
|
143
|
+
GzipOutputStream(
|
|
144
|
+
ZeroCopyOutputStream* sub_stream,
|
|
145
|
+
const Options& options);
|
|
146
|
+
|
|
147
|
+
// DEPRECATED: Use one of the above constructors instead.
|
|
148
|
+
GzipOutputStream(
|
|
149
|
+
ZeroCopyOutputStream* sub_stream,
|
|
150
|
+
Format format,
|
|
151
|
+
int buffer_size = -1) GOOGLE_ATTRIBUTE_DEPRECATED;
|
|
152
|
+
|
|
153
|
+
virtual ~GzipOutputStream();
|
|
154
|
+
|
|
155
|
+
// Return last error message or NULL if no error.
|
|
156
|
+
inline const char* ZlibErrorMessage() const {
|
|
157
|
+
return zcontext_.msg;
|
|
158
|
+
}
|
|
159
|
+
inline int ZlibErrorCode() const {
|
|
160
|
+
return zerror_;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Flushes data written so far to zipped data in the underlying stream.
|
|
164
|
+
// It is the caller's responsibility to flush the underlying stream if
|
|
165
|
+
// necessary.
|
|
166
|
+
// Compression may be less efficient stopping and starting around flushes.
|
|
167
|
+
// Returns true if no error.
|
|
168
|
+
bool Flush();
|
|
169
|
+
|
|
170
|
+
// Writes out all data and closes the gzip stream.
|
|
171
|
+
// It is the caller's responsibility to close the underlying stream if
|
|
172
|
+
// necessary.
|
|
173
|
+
// Returns true if no error.
|
|
174
|
+
bool Close();
|
|
175
|
+
|
|
176
|
+
// implements ZeroCopyOutputStream ---------------------------------
|
|
177
|
+
bool Next(void** data, int* size);
|
|
178
|
+
void BackUp(int count);
|
|
179
|
+
int64 ByteCount() const;
|
|
180
|
+
|
|
181
|
+
private:
|
|
182
|
+
ZeroCopyOutputStream* sub_stream_;
|
|
183
|
+
// Result from calling Next() on sub_stream_
|
|
184
|
+
void* sub_data_;
|
|
185
|
+
int sub_data_size_;
|
|
186
|
+
|
|
187
|
+
z_stream zcontext_;
|
|
188
|
+
int zerror_;
|
|
189
|
+
void* input_buffer_;
|
|
190
|
+
size_t input_buffer_length_;
|
|
191
|
+
|
|
192
|
+
// Shared constructor code.
|
|
193
|
+
void Init(ZeroCopyOutputStream* sub_stream, const Options& options);
|
|
194
|
+
|
|
195
|
+
// Do some compression.
|
|
196
|
+
// Takes zlib flush mode.
|
|
197
|
+
// Returns zlib error code.
|
|
198
|
+
int Deflate(int flush);
|
|
199
|
+
|
|
200
|
+
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(GzipOutputStream);
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
} // namespace io
|
|
204
|
+
} // namespace protobuf
|
|
205
|
+
|
|
206
|
+
} // namespace google
|
|
207
|
+
#endif // GOOGLE_PROTOBUF_IO_GZIP_STREAM_H__
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Protocol Buffers - Google's data interchange format
|
|
2
|
+
// Copyright 2008 Google Inc. All rights reserved.
|
|
3
|
+
// http://code.google.com/p/protobuf/
|
|
4
|
+
//
|
|
5
|
+
// Redistribution and use in source and binary forms, with or without
|
|
6
|
+
// modification, are permitted provided that the following conditions are
|
|
7
|
+
// met:
|
|
8
|
+
//
|
|
9
|
+
// * Redistributions of source code must retain the above copyright
|
|
10
|
+
// notice, this list of conditions and the following disclaimer.
|
|
11
|
+
// * Redistributions in binary form must reproduce the above
|
|
12
|
+
// copyright notice, this list of conditions and the following disclaimer
|
|
13
|
+
// in the documentation and/or other materials provided with the
|
|
14
|
+
// distribution.
|
|
15
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
16
|
+
// contributors may be used to endorse or promote products derived from
|
|
17
|
+
// this software without specific prior written permission.
|
|
18
|
+
//
|
|
19
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
|
|
31
|
+
// Author: kenton@google.com (Kenton Varda)
|
|
32
|
+
// Based on original Protocol Buffers design by
|
|
33
|
+
// Sanjay Ghemawat, Jeff Dean, and others.
|
|
34
|
+
//
|
|
35
|
+
// This file exists solely to document the google::protobuf::io namespace.
|
|
36
|
+
// It is not compiled into anything, but it may be read by an automated
|
|
37
|
+
// documentation generator.
|
|
38
|
+
|
|
39
|
+
namespace google {
|
|
40
|
+
|
|
41
|
+
namespace protobuf {
|
|
42
|
+
|
|
43
|
+
// Auxiliary classes used for I/O.
|
|
44
|
+
//
|
|
45
|
+
// The Protocol Buffer library uses the classes in this package to deal with
|
|
46
|
+
// I/O and encoding/decoding raw bytes. Most users will not need to
|
|
47
|
+
// deal with this package. However, users who want to adapt the system to
|
|
48
|
+
// work with their own I/O abstractions -- e.g., to allow Protocol Buffers
|
|
49
|
+
// to be read from a different kind of input stream without the need for a
|
|
50
|
+
// temporary buffer -- should take a closer look.
|
|
51
|
+
namespace io {}
|
|
52
|
+
|
|
53
|
+
} // namespace protobuf
|
|
54
|
+
} // namespace google
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
// Protocol Buffers - Google's data interchange format
|
|
2
|
+
// Copyright 2008 Google Inc. All rights reserved.
|
|
3
|
+
// http://code.google.com/p/protobuf/
|
|
4
|
+
//
|
|
5
|
+
// Redistribution and use in source and binary forms, with or without
|
|
6
|
+
// modification, are permitted provided that the following conditions are
|
|
7
|
+
// met:
|
|
8
|
+
//
|
|
9
|
+
// * Redistributions of source code must retain the above copyright
|
|
10
|
+
// notice, this list of conditions and the following disclaimer.
|
|
11
|
+
// * Redistributions in binary form must reproduce the above
|
|
12
|
+
// copyright notice, this list of conditions and the following disclaimer
|
|
13
|
+
// in the documentation and/or other materials provided with the
|
|
14
|
+
// distribution.
|
|
15
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
16
|
+
// contributors may be used to endorse or promote products derived from
|
|
17
|
+
// this software without specific prior written permission.
|
|
18
|
+
//
|
|
19
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
|
|
31
|
+
// Author: kenton@google.com (Kenton Varda)
|
|
32
|
+
// Based on original Protocol Buffers design by
|
|
33
|
+
// Sanjay Ghemawat, Jeff Dean, and others.
|
|
34
|
+
//
|
|
35
|
+
// Utility class for writing text to a ZeroCopyOutputStream.
|
|
36
|
+
|
|
37
|
+
#ifndef GOOGLE_PROTOBUF_IO_PRINTER_H__
|
|
38
|
+
#define GOOGLE_PROTOBUF_IO_PRINTER_H__
|
|
39
|
+
|
|
40
|
+
#include <string>
|
|
41
|
+
#include <map>
|
|
42
|
+
#include <google/protobuf/stubs/common.h>
|
|
43
|
+
|
|
44
|
+
namespace google {
|
|
45
|
+
namespace protobuf {
|
|
46
|
+
namespace io {
|
|
47
|
+
|
|
48
|
+
class ZeroCopyOutputStream; // zero_copy_stream.h
|
|
49
|
+
|
|
50
|
+
// This simple utility class assists in code generation. It basically
|
|
51
|
+
// allows the caller to define a set of variables and then output some
|
|
52
|
+
// text with variable substitutions. Example usage:
|
|
53
|
+
//
|
|
54
|
+
// Printer printer(output, '$');
|
|
55
|
+
// map<string, string> vars;
|
|
56
|
+
// vars["name"] = "Bob";
|
|
57
|
+
// printer.Print(vars, "My name is $name$.");
|
|
58
|
+
//
|
|
59
|
+
// The above writes "My name is Bob." to the output stream.
|
|
60
|
+
//
|
|
61
|
+
// Printer aggressively enforces correct usage, crashing (with assert failures)
|
|
62
|
+
// in the case of undefined variables in debug builds. This helps greatly in
|
|
63
|
+
// debugging code which uses it.
|
|
64
|
+
class LIBPROTOBUF_EXPORT Printer {
|
|
65
|
+
public:
|
|
66
|
+
// Create a printer that writes text to the given output stream. Use the
|
|
67
|
+
// given character as the delimiter for variables.
|
|
68
|
+
Printer(ZeroCopyOutputStream* output, char variable_delimiter);
|
|
69
|
+
~Printer();
|
|
70
|
+
|
|
71
|
+
// Print some text after applying variable substitutions. If a particular
|
|
72
|
+
// variable in the text is not defined, this will crash. Variables to be
|
|
73
|
+
// substituted are identified by their names surrounded by delimiter
|
|
74
|
+
// characters (as given to the constructor). The variable bindings are
|
|
75
|
+
// defined by the given map.
|
|
76
|
+
void Print(const map<string, string>& variables, const char* text);
|
|
77
|
+
|
|
78
|
+
// Like the first Print(), except the substitutions are given as parameters.
|
|
79
|
+
void Print(const char* text);
|
|
80
|
+
// Like the first Print(), except the substitutions are given as parameters.
|
|
81
|
+
void Print(const char* text, const char* variable, const string& value);
|
|
82
|
+
// Like the first Print(), except the substitutions are given as parameters.
|
|
83
|
+
void Print(const char* text, const char* variable1, const string& value1,
|
|
84
|
+
const char* variable2, const string& value2);
|
|
85
|
+
// Like the first Print(), except the substitutions are given as parameters.
|
|
86
|
+
void Print(const char* text, const char* variable1, const string& value1,
|
|
87
|
+
const char* variable2, const string& value2,
|
|
88
|
+
const char* variable3, const string& value3);
|
|
89
|
+
// TODO(kenton): Overloaded versions with more variables? Three seems
|
|
90
|
+
// to be enough.
|
|
91
|
+
|
|
92
|
+
// Indent text by two spaces. After calling Indent(), two spaces will be
|
|
93
|
+
// inserted at the beginning of each line of text. Indent() may be called
|
|
94
|
+
// multiple times to produce deeper indents.
|
|
95
|
+
void Indent();
|
|
96
|
+
|
|
97
|
+
// Reduces the current indent level by two spaces, or crashes if the indent
|
|
98
|
+
// level is zero.
|
|
99
|
+
void Outdent();
|
|
100
|
+
|
|
101
|
+
// Write a string to the output buffer.
|
|
102
|
+
// This method does not look for newlines to add indentation.
|
|
103
|
+
void PrintRaw(const string& data);
|
|
104
|
+
|
|
105
|
+
// Write a zero-delimited string to output buffer.
|
|
106
|
+
// This method does not look for newlines to add indentation.
|
|
107
|
+
void PrintRaw(const char* data);
|
|
108
|
+
|
|
109
|
+
// Write some bytes to the output buffer.
|
|
110
|
+
// This method does not look for newlines to add indentation.
|
|
111
|
+
void WriteRaw(const char* data, int size);
|
|
112
|
+
|
|
113
|
+
// True if any write to the underlying stream failed. (We don't just
|
|
114
|
+
// crash in this case because this is an I/O failure, not a programming
|
|
115
|
+
// error.)
|
|
116
|
+
bool failed() const { return failed_; }
|
|
117
|
+
|
|
118
|
+
private:
|
|
119
|
+
const char variable_delimiter_;
|
|
120
|
+
|
|
121
|
+
ZeroCopyOutputStream* const output_;
|
|
122
|
+
char* buffer_;
|
|
123
|
+
int buffer_size_;
|
|
124
|
+
|
|
125
|
+
string indent_;
|
|
126
|
+
bool at_start_of_line_;
|
|
127
|
+
bool failed_;
|
|
128
|
+
|
|
129
|
+
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Printer);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
} // namespace io
|
|
133
|
+
} // namespace protobuf
|
|
134
|
+
|
|
135
|
+
} // namespace google
|
|
136
|
+
#endif // GOOGLE_PROTOBUF_IO_PRINTER_H__
|