* Remove duplicate "Service" section.
* Remove incorrect "Service method" that talked about passing messages
and services, which was never implemented in gbc.
When using CMake to build, the zlib submodule inside of the grpc
submodule ends up with a generated file that makes Git consider the
submodule dirty. This state can be ignored for day-to-day development.
This is the first step in enabling Boost 1.66 CI build on Travis. After
an image is produced that contains Boost 1.66, we still need to consume
that image in .travis.yml and add 1.66 to the configuration matrix.
I've locally tested that Bond builds and the basic tests pass with Boost
1.66 using Clang.
Fixes a race condition when `bond::ext::gRPC::io_manager::shutdown` and
`bond::ext::gRPC::io_manager::wait` are called concurrently. The functions
are not mutually exclusive and the latter destroys the
`grpc::CompletionQueue` which is not necessary.
Fixes https://github.com/Microsoft/bond/issues/744
The bond::ext::gRPC::io_manager expects pointers to bond::ext::gRPC::io_manager_tag base when it receives void* tags. However, we are are directly passing a pointer to derived type instead of explicitly casting to base (which does not cause issues due to current layout of those objects).
Simplifies the StaticParser<Input>::ReadFields function when used with protocols that do not implement field omitting by excluding some run-time code paths.
Simplifies the `bonded<void, Reader>::_Apply` function when used with
protocols that specify `uses_marshaled_bonded<Reader>` to be `false_type`
(currently all except `Simple`) by excluding some run-time code paths.
With this change deserialization will now fail by throwing `bond::CoreException` when `BT_STOP` is encountered while deserializing a base struct.
Fixes https://github.com/Microsoft/bond/issues/742
* This fixes broken C# codegen when a service method has attributes.
* Add both C++ and C# unit test to make sure that service and method
attributes are properly generated and accessible.
Fixes https://github.com/Microsoft/bond/issues/617
* Use `docker pull` to download a pre-built image from
bondciimages.azurecr.io instead of `wget` then `docker load`.
* This speeds up image downloading by about 25%.
* Update tools/ci-scripts/linux/image-builder/README.md to indicate that
images are built automatically in a Microsoft VSTS build queue.
* Delete helper build_image.zsh and upload_image.zsh scripts.
When a service contains events or parameter-less methods, the generated
code uses `bond::Void` as the request/result type. To serialize
`bond::Void`, bond_reflection.h needs to be included.
The generated service code now includes bond_reflection.h if any service
contains an event or a parameter-less method.
Fixes https://github.com/Microsoft/bond/issues/735
- gbc can only be built with GHC >= 8.0.1
- stack resolver has been updated
- improve error messages
- add a comment about parser ordering to avoid regression
- added python script to compare gbc outputs
The change adds overloads of `Serializer::Field` function that avoids generating calls to `detail::omit_field` in the cases where the result is known at compilation. This makes the compilation a bit faster (it depends on actual types being used, but the expected estimate would be 3-5%) and also likely to generate faster, smaller and more efficient runtime code when compiler fails to optimize away the above calls.
* Use `#pragma once` everywhere.
* Every header now include `<bond/core/config.h>` before anything else.
* Includes are done in sections, from least general to most general.
* Includes within each section are sorted in lexicographical order.
* CODING_GUIDELINES_CPP.md added to capture these guidelines.
This change introduces a `BOND_LIB_TYPE` macro and moves some utility
functions used by the Simple JSON protocol to corresponding source file
which reduces the number of included files by over 240.
The `BOND_LIB_TYPE` macro will allow:
- to keep some expensive-to-compile headers away from public ones
- pre-compile some common parts of the library
Currently C++ enum's name-to-value and value-to-name maps use a `std::map`
and are always constructed, even when not used. This change:
- allows the user to provide custom map type (e.g.
`boost::container::flat_map`)
- lazily constructs the map on first access
- changes the default generated conversion functions to use
`std::unordered_map`
This commit removes the need for the mvn binary and converts all
Java dependencies within the repo to true dependencies, rather than file
references. It also generates automatic versions for the core and
gradle-plugin projects from git tags.
Currently, `boost::assign::map_list_of` is used to initialize C++ metadata
attribute maps. This change makes use of [list initialization][1] available
in C++11 which is more appropriate and removed the dependency on a Boost
header.
[1]: [http://en.cppreference.com/w/cpp/language/list_initialization
Currently, the `--export-attribute` is used to mark all static
`bond::Metadata` fields in a compile-time `Schema` object, including when
the type is a template, which is not correct. This change has `gbc` skip the
attribute in such cases.