patch: alisdairsullivan@yahoo.ca
client: erlang
fixes error exposed in THRIFT-2647 by avoiding using restricted identifiers in erlang type signatures generated by the compiler
client: erlang
patch: alisdair sullivan (alisdairsullivan@yahoo.ca)
moves tests for the thrift compiler generation of files to /test/erl, properly removes artifacts from test
suite runs, adds module listing to .app.src for better behaviour when using erlang tools like relx and
rebar and modifies .gitignore to not ignore relevant erlang test components
Client: build process
Patch: jfarrell
Reverting TMultiplexedProtocol tests in test/py from commit 879cab2c are non functional,
reverts the portion of the commit that changed test/py/{TestServer.py,TestClient.py}
Follow up to address this issue: THRIFT-2613
Added cross tests for ruby with ruby, cpp, java, node and python.
ruby_protocols="binary compact json accel"
ruby_transports="buffered framed"
ruby_sockets="ip"
Created new TestServer.rb and TestClient.rb for this purpose
Patch: Chamila Dilshan Wijayarathna
Added 'ssl' tests for python tests.
Added '-transport arg (=buffered) transport: buffered, framed, http' to test/py/TestServer.py and test/py/TestClient.py and removed '-framed' arguement.
Changed test/py/RunClientServer.py to match above changes.
Added tests to compact protocol in python cases.
Added tests to test BinaryAccelarated protocol with Binary Protocol.
Changed py/TestClient.py and py/TestServer.py from --proto to --protocol parameter
Patch: Chamila Dilshan Wijayarathna & Roger Meier
py-py, py-java, java-py, cpp-py, py-cpp, nodejs-py, py-nodejs tests added with
py_protocols="binary compact json accel"
py_transports="buffered"
py_sockets="ip",
test.sh refactored so that new protocols, transports and sockets can be easily added.
Patch: Chamila Dilshan Wijayarathna
Transport, Protocol and Server
Patch: smallfish & djwatson
& haijunz & Roger Meier
This closes#103 and #82
From 7aaea7ef4e6f44097b02543fa2e62597eae9d61e Mon Sep 17 00:00:00 2001
From: smallfish <smallfish.xy@gmail.com>
Date: Tue, 22 Apr 2014 11:26:52 +0800
Subject: [PATCH] THRIFT-1914 Python: Support for Multiplexing Services on any
Transport
Client: compiler general
Patch: Dave Watson
This closes#87
commit 078ce57e816eeb3697acf6f2c50e09526da73d3b
Author: Dave Watson <davejwatson@fb.com>
Date: 2014-03-21T19:42:31Z
[thrift] Compiler: allow annotations without "= value"
Summary: (foo) is the same as (foo = 1), for brevity
Test: AnnotationTest.thrift still compiles
Client: Go
Patch: Aleksey Pesternikov
This closes#105
commit f2e7186ca8d63f407dba0c56ee51afd6405926ba
Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
Date: 2014-04-22T12:48:14Z
add _ to generated filename if it ends with _test.go
Client: compiler general
Patch: Dave Watson
This closes#113
commit 52b99af4ee1574253dcb77933d76a7ebb2d830df
Author: Dave Watson <davejwatson@fb.com>
Date: 2014-04-23T20:05:56Z
change cpp.ref to &
commit 3f9d31cc6140367529fd8f7b1b67056ec321786f
Author: Dave Watson <davejwatson@fb.com>
Date: 2014-04-23T21:50:29Z
Recursion depth limit
commit 61468e4534ce9e6a4f4f643bfd00542d13600d83
Author: Dave Watson <davejwatson@fb.com>
Date: 2014-04-25T19:59:18Z
shared_ptr for reference type
Client: C#
Patch: Beat Käslin
This closes#104
commit 21c33abd59a2333c48722933c6894d8ed145e638
Author: Beat Kaeslin <beat.kaeslin@siemens.com>
Date: 2014-04-16T14:07:58Z
Add TLS transport for C#
commit 60a0baa1797b0ef0ea6f8c21e5b81a78cdfcdf16
Author: Beat Kaeslin <beat.kaeslin@siemens.com>
Date: 2014-04-17T06:23:57Z
csharp tests moved to the end
Client: cpp
Patch: Dave Watson
Github Pull Request: This closes#84
----
commit b6134cedf292845e5ed01052919894df6b561bf2
Date: 2014-03-20T18:12:04Z
Recursive structs support in parser
A common complaint is that you can't express trees or other recursive structures in thrift easily - unlike protobufs. This diff loosens up the parser to allow using structs before they are defined (and uses typedef as a forward declaration).
This diff is actually enough to make recursive types work for some dyamic languages (I tried php, works out of the box!)
Other languages will need forward declarations, or ways to box types, to make this work (i.e. C++ needs both forward decls and a way to express structs as pointers)
THRIFT-847 Test Framework harmonization across all languages
fix compact protocol test within TestServer.cpp and TestClient.cpp
remove stuff that breaks the cross language test suite
- TestServer.cpp: cin read
- test.sh: mkfifo
Reported-by: Chamila Wijayarathna
Patch: Pierre Lamot
further modifications by Roger Meier
- git mv instead of delete and add
- detect node or nodejs with configure.ac
- use exit instead of return within lib/nodejs/test/testAll.sh
Patch: Henrique Mendonça
align with the tests we have for the original JS and C++ libraries
it also corrects two small bugs on the test server
and add nodejs to travis and make check
Patch: Matthew Imrie
Add method to binary.js to properly read a byte type as
signed Changed transport.js readByte methods in
TFramedBuffer and TBufferedTransport to use binary.js
readByte method Added unit test for binary.js readByte
method to binary.test.js and changed test harness to
nodeunit.
TJSONProtocol.py: Frederic Delbos
THRIFT-847 Test Framework harmonization across all languages
Integration into py lib and test suite
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1404838 13f79535-47bb-0310-9956-ffa450edef68
Client: rb
Patch: Nathan Beyer
test/rb/Makefile.am contains a invocation or the ruby interpreter to run test_suites.rb that needs modification to run correctly on Ruby 1.9+. Ruby 1.9+ doesn't include the CWD by default anymore.
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1394906 13f79535-47bb-0310-9956-ffa450edef68
Client: build
Patch: Andrew Cox
File modes of some non-script text files (e.g. .xml, .java, .cc) in the source tree include execute permissions (because these files have the svn:executable property).
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1339492 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
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: 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
This patch adds a new TZlibTransport to the Python library and extends the test suite to exercise it.
Patch: Will Pierce
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1084276 13f79535-47bb-0310-9956-ffa450edef68
This patch fixes a TCompactProtocol bug and expands the test cases to exercise the problem.
Patch: Will Pierce
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1083877 13f79535-47bb-0310-9956-ffa450edef68
This patch updates ThriftTest.thrft to have a valid php namespace, as well as updating the test client to use the properly namespaced code
Patch: Nicholas Telford
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1076316 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
Convert TBinaryProtocol and TCompactProtocol to template classes, taking
the transport class as a template parameter. This allows them to make
non-virtual calls when using the template, improving serialization
performance.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005136 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
Tests are now self-contained and correctly exit after running. There's a single run script which has improved error messages and defaults to the thrift binary compiled in the current source directory instead of those in PATH. And as a bonus hooks both cabal check and running the tests to make check.
Patch: Christian Lavoie
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004861 13f79535-47bb-0310-9956-ffa450edef68
This patch adds a tutorial for CSharp. It also moves the 'test' client and server into the tutorial, because they were not being used by the tests.
Patch: Roger Meier
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1000953 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
- Client is no longer a separate process.
- Simplified constructors moved into another module.
- All functions and exceptions return the new client,
to allow for future statefulness in the client.
NOTE: With the new library and old gen-code, attempting to call a
nonexistent function will result in an exit.
TODO: fix docs and tests (tether test is not meaningful)
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@990979 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
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
This patch adds a new THttpTransport to the C# library and adds some related changes to the Makefile and csproj.
Patch: Michael Greene and Todd Gardner
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@957708 13f79535-47bb-0310-9956-ffa450edef68
This patch adds an implementation of a fully-asynchronous client that makes use of NIO. Stubs for the async method calls are generated along with the existing synchronous ones.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@948492 13f79535-47bb-0310-9956-ffa450edef68
This patch ditches the old print_version.sh method and instead generates the compiler's version.h via the Makefile.
Patch: Anthony Molinaro
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@940630 13f79535-47bb-0310-9956-ffa450edef68
This is subtly different from a type annotation, since some bits of
metadata only make sense in the context of a single structure field,
like whether the field is required, or whether the C++ code should use
a pointer for it.
This change doesn't define any meaningful annotations. It just sets up
the parsing infrastructure.
I have no idea if $10 will work with older versions of yacc. It seems
to work fine with bison.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@919325 13f79535-47bb-0310-9956-ffa450edef68
This patch causes constants of all types to be resolved differently by the compiler, and makes it so that constants of enum types contain a reference to the enum type so that code generators can produce the correct names.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@892358 13f79535-47bb-0310-9956-ffa450edef68
This patch introduces new IDL syntax for creating Unions, explicityly single-valued structs. While the parser changes are portable, this patch only includes the actual generated code changes for the Java library. Other libraries can continue to generate a struct with the same fields and remain compatible until they are able to implement the full shebang.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@810300 13f79535-47bb-0310-9956-ffa450edef68
Add a client option that causes clients to monitor their creators
and terminate when the creator dies. This makes it possible to
prevent client leaks without linking, because the latter causes
application code to be killed when a transport error occurs and
exits are not trapped.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@781636 13f79535-47bb-0310-9956-ffa450edef68
Add a client option to prevent the initial connect (which causes
the protocol factory to be ignored). The main use case for this
is testing the proper handling of clients that cannot connect.
Update the tether test to use this feature instead of a raw
gen_server:start call.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@781635 13f79535-47bb-0310-9956-ffa450edef68
- Create a thrift_client:start function that accepts client options.
- Make start_link a wrapper that adds {monitor, link}.
- Add a test to make sure that everything dies or doesn't die as expected.
(The test has to be run manually.)
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@781634 13f79535-47bb-0310-9956-ffa450edef68
- Added some stuff to EXTRA_DIST.
- Added some non-compiled sources to a C++ test.
- Made lib/perl/test a SUBDIR of lib/perl.
The last is a revert of r766558, but I moved the "Types.pm" rules in
lib/perl/test/Makefile.am to the check-local target, so it should still
work as expected (per THRIFT-461).
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@777681 13f79535-47bb-0310-9956-ffa450edef68
2nd try at this issue. This time, we will use numeric field order ONLY for the serialization portion, instead of globally. This should make it much easier to produce the correctly ordered output in all cases.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@764072 13f79535-47bb-0310-9956-ffa450edef68
- Remove the default values from CompactProtocolTestStruct
- Add a const CompactProtocolTestStruct that contains those values
This has a short-term benefit and a long-term benefit.
The short-term benefit is that it removes the list-as-map-key
(etc.) values from the "types" generated file and puts it into
the "constants" generated file. This gets them out of the way
of the Python tests, so they pass again.
The long term benefit is that is strengthens the Java TCompactProtocol
test. Before, it was reading the "full" CompactProtocolTestStruct into
a CompactProtocolTestStruct that was just constructed, but the latter
was already almost equal to the former. This change makes it much
easier to create an empty CompactProtocolTestStruct to read the serialized
data into.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@762957 13f79535-47bb-0310-9956-ffa450edef68
".mk" is the usual extension for makefiles not named
"GNUMakefile", "Makefile", or "makefile". "Makefile.thrift"
should be a Thrift IDL file (think "Makefile.PL").
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@761480 13f79535-47bb-0310-9956-ffa450edef68
Switch native proto implementations to use read_all instead of read. Add a bunch of tests to verify.
Also:
- removed some commented code in binary_protocol_accelerated.c
- struct.c was missing one of the possible native method calls
- updates gem manifest (included files that didn't exist)
- fixed svn:ignores of test/rb/gen-rb and lib/java/gen-java
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@761037 13f79535-47bb-0310-9956-ffa450edef68