THRIFT-1578 C_GLib generated code does not compile
THRIFT-1582 Bad includes of nested thrift files in c_glib
Patch: José Antonio Santos
Minor Modificatons by roger:
- thrift prefix for includes
- g_object_unref instead of g_clear_object (needs glib>=2.28)
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1331752 13f79535-47bb-0310-9956-ffa450edef68
To ensure there are no include path collisions the C and C++ header
include paths should include 'thrift' as the root leaf. This will
prevent having to place /usr/include/thrift into the compilers include
header search path, which might otherwise result in the compiler
accidentally picking up headers that it shouldn't.
e.g. #include <foo/bar.h> should be #include <thrift/foo/bar.h>
Change-Id: I48f2b0f549bda0fc81e85506ac857adc800b98a1
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1325674 13f79535-47bb-0310-9956-ffa450edef68
Compiler: Ruby
Patch: Ilya Maykov
Fixed indentation of gen-rb files by wrapping each file
output stream in a class that keeps track of the indent
level instead of using the global indent.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1295423 13f79535-47bb-0310-9956-ffa450edef68
Library: Ruby
Patch: Ilya Maykov
This patch does 2 things:
1) Adds a "require 'thrift'" line to the *_types.rb and *_constants.rb files,
to be consistent with *_service.rb which was generating the thrift require
already.
2) Adds a "rubygems" option to the --gen rb compiler target. When this option
is specified, the compiler will add a "require 'rubygems'" line to the top
of each gen-rb file. Defaults to false.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1294949 13f79535-47bb-0310-9956-ffa450edef68
There was some incorrect else if logic added to the CPP generated code, which this patch replaces with the proper functionality.
Patch: Thomas Wiggins
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1292508 13f79535-47bb-0310-9956-ffa450edef68
Client: cpp
Patch: Diwaker Gupta
In CPP, all optional fields are guarded by the isset helper struct. On Java, however, the generated code takes advantage of nullable types: for containers, structs, exceptions, enums, and, notably, strings, the generator elides explicit use of an "isset" bit vector and instead emits checks of the form "field null". This leads to varying behavior between the two languages: an optional string field with a default value will have {{isset[fieldid]}} false on C, but the equivalent test in Java will be true.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1236529 13f79535-47bb-0310-9956-ffa450edef68
Patch: Kieran Benton
changes by roger:
- use ServiceModel, DataContract only when wcf is enabled
- indent space vs tab
- remove issue on lib/cpp/README_WINDOWS
- add testStringMap on test/csharp/ThriftTest/TestServer.cs
- add build to test/csharp/ThriftTest/maketest.sh
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1232578 13f79535-47bb-0310-9956-ffa450edef68
This patch gives the generated code some variable-sized options for the isset bit vector. The compiler will attempt to use byte, short, int and long types before reverting to a BitSet for structs with a LOT of optional fields. This should save a fair amount of memory in a lot of cases.
Patch: Brian Bloniarz
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1221828 13f79535-47bb-0310-9956-ffa450edef68
Client:delphi
Patch: Kenjiro Fukumitsu
Add the function to delphi generator that generates constructor with parameters to initialize members,if the class is exception and have more than zero parameters.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1212226 13f79535-47bb-0310-9956-ffa450edef68
Client: cpp
Patch: Dave Watson
TSocket.send() was expecting a send() on the underlying socket
to fail by returning zero, but the actual behavior is to raise
an exception.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1211736 13f79535-47bb-0310-9956-ffa450edef68
Client: cpp
Patch: Dave Watson
In generate_process_function(), service_func_name is always used as a
string literal. Therefore, construct it with the double quotes
built-in, rather than having to add them everywhere we use it.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1210757 13f79535-47bb-0310-9956-ffa450edef68
Client: Objective-c
Patch: Hirano Satoshi
Adds -objc-arc flag to compiler and if used removes the retain/release/autorelease from generated code
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1210732 13f79535-47bb-0310-9956-ffa450edef68
Client: delphi
Patch: Kenjiro Fukumitsu
Generated code cannot be compiled with Delphi 2009 due to the bug in constant initializer.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1210728 13f79535-47bb-0310-9956-ffa450edef68
Client: java
Patch: Mike Riley
Adds program_name to the Constants file in java to match all other client libs.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1210724 13f79535-47bb-0310-9956-ffa450edef68
Client: js
Patch: Mike Riley
Flips print out of constants and structs within the generator to allow for use of constants within the structs.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1204495 13f79535-47bb-0310-9956-ffa450edef68
Client: js
Patch: Hans Duedal
When serializing boolean types, false booleans are serialized as null instead of false switching to using loose compare instead
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1197955 13f79535-47bb-0310-9956-ffa450edef68
Client: delphi
Patch: Kenjiro Fukumitsu
Delphi compiler's naming check does not work properly with exception object in the function that generates struct writer.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1195747 13f79535-47bb-0310-9956-ffa450edef68
Client: delphi
Patch: Jens Geyer
The generated code lacks calls to ReadMapEnd, ReadListEnd and ReadSetEnd. Although actually no problem occurs with the BinaryProtocol, other protocols (like JSON) do some important things there.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1195466 13f79535-47bb-0310-9956-ffa450edef68
Client: delphi
Patch: Jens Geyer
Fixes build failure due to t_delphi_generator.cc:780: error: integer constant is too
large for 'long' type
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1189006 13f79535-47bb-0310-9956-ffa450edef68
Client: delphi
Patch: Kenjiro Fukumitsu
After recieved STOP,it calls additional ReadFieldEnd, which is different from the implementation of other language compiler.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1189005 13f79535-47bb-0310-9956-ffa450edef68
Client: delpi
Patch: Jens Geyer
Constants such as i32 = 0x80000000 produce a Delphi warning. The current code renders such values as positive integer, which needs an explicit typecast to satisfy the Delphi compiler.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1188494 13f79535-47bb-0310-9956-ffa450edef68
Client: cpp
Patch: Dave Watson
The thrift-generated code for C++ class objects does not provide any
initialization for enum values, so they wind up containing random/uninitialized
data. This causes problems when clients do not send argument data, as the server
receives random data rather than zero for unpassed args.
Enums should be initialized to zero.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1179909 13f79535-47bb-0310-9956-ffa450edef68
Client: py
Patch: Dave Watson
The thrift-generated Python service client allows overriding the default host/port by doing "-h host:port" on the command line. Oftentimes, you want to override the host but not the port, as most services run on well-defined ports.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1179905 13f79535-47bb-0310-9956-ffa450edef68
Client: py
Patch: Dave Watson
Fixed python code generation so that user-defined exceptions have a
base class of TException rather than Exception.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1179903 13f79535-47bb-0310-9956-ffa450edef68
This patch fixes the problem in the java generator (and removes an unnecessary comment). It also amends TestTUnion to catch this.
Patch: Armaan Sarkar
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1164202 13f79535-47bb-0310-9956-ffa450edef68
This patch makes StandardScheme write metadata, and adds tests against a static known-good Binary-serialized struct for a reference.
Patch: Armaan Sarkar
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1162917 13f79535-47bb-0310-9956-ffa450edef68
This patch mirrors a previous commit to the main Java library by removing the clone() implementation altogether.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1160333 13f79535-47bb-0310-9956-ffa450edef68
This patch makes the lexer throw an exception when an unexpected token is encountered, as opposed to the standard behavior of just printing it out and doing nothing.
Patch: Adam Simpkins
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1159733 13f79535-47bb-0310-9956-ffa450edef68
This switch allows the user to specify explicit negative field IDs in Thrift IDL in order to avoid breaking wire protocol.
Patch: Dave Watson
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1158967 13f79535-47bb-0310-9956-ffa450edef68
THRIFT-1239. java: TupleProtocol- An extremely compact, temporary protocol
This monster commit is the combination of the two above tickets, providing a new serialization framework and the first new consumer in one go.
Patch: Armaan Sarkar
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1156728 13f79535-47bb-0310-9956-ffa450edef68
Client:python
Patch: Eric Rannaud
Updated displayed options for python help to print py:utf8strings availability.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1145175 13f79535-47bb-0310-9956-ffa450edef68
Client: c++
Patch: Diwaker Gupta
Fixes issue with return values always returning true from process method when an exception or error occurs.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1140262 13f79535-47bb-0310-9956-ffa450edef68
Patch: Dan Di Spaltro
includes updated test.html to get qunit.js with correct mime-type(IE9 complains)
Fixed by Roger Meier
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1125892 13f79535-47bb-0310-9956-ffa450edef68
Client: as3
Patch: Justin Florentine
Generated AS3 object won't compile since the compiler uses the same function that generates member declarations.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1125067 13f79535-47bb-0310-9956-ffa450edef68
This patch fixes the ocaml generator to generate good code when the 'include' Thrift IDL directive is used.
Patch: Joel Raymont
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1084654 13f79535-47bb-0310-9956-ffa450edef68
This patch adds a triple-underscore prefix to all the ivars in TAsyncClient, making it substantially more difficult to get a conflict.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1081868 13f79535-47bb-0310-9956-ffa450edef68
This patch adds a -out switch that allows for an absolute path to be set for outputting generated code.
Patch: Jake Farrell
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1076000 13f79535-47bb-0310-9956-ffa450edef68
This patch introduces a handful of abstract, non-generated classes that allow us to generate much less code for service implementations.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1068487 13f79535-47bb-0310-9956-ffa450edef68
This patch causes Java Serialized Thrift structs to be serialized onto the stream via the Compact Protocol.
Patch: Mathias Herberts
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1063907 13f79535-47bb-0310-9956-ffa450edef68
valueOf saves us on memory for 'small' primitive types and costs us nothing in other situations, so it's an all-around win.
Patch: Takashi Yonebayashi
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1063818 13f79535-47bb-0310-9956-ffa450edef68
This patch resolves problems with double constants and adds a copy method to generated structs.
Patch: Richard Low
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1045320 13f79535-47bb-0310-9956-ffa450edef68
This patch removes the imports for Thrift library classes and fully qualifies all references, guaranteeing there won't be any name clashes.
Patch: Peter Schuller
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1043156 13f79535-47bb-0310-9956-ffa450edef68
Be a little more sensitive to how we parse out dots; some java generator changes to make sure things stay consistent.
THRIFT-1005. java: Give unions byte[] signature methods to go along with their ByteBuffer counterparts
Some new constructors, getters, and setters to ease migration of unions to ByteBuffer style.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1038399 13f79535-47bb-0310-9956-ffa450edef68
Make the PHP generator recognize a new-style namespace called "php.path".
If it is present, it is segmented and used as a path to include the
generated code. (It goes between "packages" and the Thrit file basename.)
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005172 13f79535-47bb-0310-9956-ffa450edef68
Add some profiling code to track when potentially unnecessary virtual
calls are made in the thrift C++ serialization and deserialization code.
This can be used to help service implementors determine which places in
their code should be updated to use an appropriate thrift template
class.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005140 13f79535-47bb-0310-9956-ffa450edef68
Add the ability for Thrift servers to monitor client connections. It is
activated by #including server/TClientInfo.h and creating 1) a
TClientInfoCallHandler passed to the processor with setEventHandler()
and 2) a TClientInforServerHandler passed to the server with
setServerEventHandler().
The result vector, showing active connections, provides client address
and the thrift call it is executing (or last executed), the time
connected, and the number of calls made since connection.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005139 13f79535-47bb-0310-9956-ffa450edef68
When the "templates" option is passed to the C++ generator, it now emits
templatized versions of the client and processor. Generated types emit
templatized read() and write() functions.
This allows the generated code to invoke the correct non-virtual
TTransport and TProtocol implementations, resulting in faster
serialization and deserialization.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005138 13f79535-47bb-0310-9956-ffa450edef68
Add a virtual function "completed__(bool)" to xxxCobClient that is
called by recv_xxx() after reception of a response (arg = true) or an
exception (arg = false). This allows the TAsyncClient to intercede at
that point, permitting, e.g., the load-balancing of persistent
connections that would otherwise remain bound to a single server.
A new "no_client_completion" flag inhibits generation of this mechanism.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005131 13f79535-47bb-0310-9956-ffa450edef68
Changing the order of these calls makes more sense from the perspective
of logical operations. It also simplifies the upcoming stats collection
code. No clients should be affected.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005128 13f79535-47bb-0310-9956-ffa450edef68
There are three major parts of this:
1/ New callback-style interfaces for for a few key Thrift components:
TAsyncProcessor for servers and TAsyncChannel for clients.
2/ Concrete implementations of TAsyncChannel and a server for
TAsyncProcessor based on evhttp.
3/ Async-style code generation for C++
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005127 13f79535-47bb-0310-9956-ffa450edef68
- Add a TProcessorEventHandler callback interface.
- Add methods to TProcessor to hold an instance of the interface.
- Add code to the compiler to make the processor call callbacks at key points.
- Add an optional processor event handler to the test server.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005126 13f79535-47bb-0310-9956-ffa450edef68
Just requires calling get_true_type in the right spot. Because "the
right spot" is under src/parse, get_true_type had to be moed from
t_generator to t_type.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004703 13f79535-47bb-0310-9956-ffa450edef68
Forcing all of the functions under src/parse to be defined in header
files is silly and sometimes painful. Createa a "parse.cc" file for
functions that don't belong in header files. To start, move
generate_fingerprint there, because it requires including md5.h.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004702 13f79535-47bb-0310-9956-ffa450edef68
This patch removes unnecessary enum value resolution code from all the individual generators. It's been unnecessary since forever ago when we made the compiler force the global resolution of values.
Patch: Christian Lavoie
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1001966 13f79535-47bb-0310-9956-ffa450edef68
This patch fixes the type mappings to be more sane. It *will* break existing code, but the breakages should be well worth it.
Patch: Christian Lavoie
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@999700 13f79535-47bb-0310-9956-ffa450edef68
This patch makes the bindings compile with pedantic warning levels, and individually declares each required language extension.
Patch: Christian Lavoie
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@998955 13f79535-47bb-0310-9956-ffa450edef68
The recent enum change was causing enums to break if used as constant
values by the C++ generator. The problem was that we were searching for
the fully-qualified constant name (enum_name.VALUE_NAME) in the enum
values. This didn't affect Java because it just uses symbolic names in
the generated code. Fix it by grabbing the base name before doing the
search.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@996610 13f79535-47bb-0310-9956-ffa450edef68
The recent enum change was causing t_enum::get_constant_by_name to fail
in t_const_value::get_integer. This was causing a difficult-to-debug
segfault. Check for failure and throw an exeception.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@996609 13f79535-47bb-0310-9956-ffa450edef68
This patch causes the underlying ByteBuffer that backs a binary field to be hidden behind a default accessor that provides a byte[] interface. This should allow users who skipped 0.4 to update their generated code without breaking any of their other code. A new accessor has been added that allows a way down to the underlying ByteBuffer for those experts who want to take advantage.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@996579 13f79535-47bb-0310-9956-ffa450edef68
This patch makes it illegal to refer to enum values by just their names in the IDL. Now, you must also provide the enum type's name as well.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@996320 13f79535-47bb-0310-9956-ffa450edef68
Most of the other Thrift languages either have enum values that are
scoped to the type or emulate enums in that way. Now C++ does the same
by default. "enum Foo" in a .thrift file will be generated as Foo::type
so the values can be called Foo::value1, etc. The "pure_enums" compiler
option restores the old behavior.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@996015 13f79535-47bb-0310-9956-ffa450edef68
yywrap is only needed if we need one lexer context to traverse multiple
input files. This feature isn't used by Thrift, so we disable it with
"option noyywrap". With yywrap disabled, there is no need to link to
libfl if flex is the lex implementation used.
With this patch, release tarballs can be built without lex.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991254 13f79535-47bb-0310-9956-ffa450edef68
- Make AX_BOOST_BASE warn instead of fataling if Boost is not found.
- If Boost is not found, disable compilation of the C++ library.
- Do not use CPPFLAGS or LDFLAGS from Boost when building the compiler.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991253 13f79535-47bb-0310-9956-ffa450edef68
Previously, the Ruby generated used boost::tokenizer to produce a
vector of namespace components from a dot-delimited namespace string.
We can do this manually with only a slight increase in complexity.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991251 13f79535-47bb-0310-9956-ffa450edef68
My combined patch for THRIFT-599 was committed, but it is preferable
commit the individual patches to preserve the more detailed log and
blame data. I'll recommit r987018 as a sequence of patches and r988722
as its own rev.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@990957 13f79535-47bb-0310-9956-ffa450edef68
This patch adds a new method to t_generator that allows the compiler to avoid special cases in checking for sub-namespaces in the Thrift IDL.
Patch: Bruce Lowekamp
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@987565 13f79535-47bb-0310-9956-ffa450edef68
The only user-visible changes are to the client. Every thrift call now returns {NewClient, Result} instead of just Result.
Patch: David Reiss (assist to Anthony Molinaro)
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@987018 13f79535-47bb-0310-9956-ffa450edef68
A patch to the OCaml generator which uses default values defined in the .thrift file to initialize the members of the generated class.
Patch: Lev Walkin
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@985041 13f79535-47bb-0310-9956-ffa450edef68