* Simplify C# Comm compat test projects by having them follow what the
other projects do.
* Use (semi-)standard (across Bond) order for elements.
* Reference core Bond assemblies via $(OutputPath) instead of hard-coded
debug\net45.
* Reference comm Bond assemblies via ProjectReference items.
Methods that never await anything except what they return can simply return
the Task that they were awaiting, eliminating some compiler-generated async
machinery.
LayerStackProvider's constructor no longer requires a logger.
Defer initialization of the cached layer stack in the stateless case.
Pass in logger during send/receive operations instead.
Closes https://github.com/Microsoft/bond/pull/241
Show kind enum in polymorphic_container example
Instead of using the deprecated bond_meta::full_name, construct, the
example now demonstrates using an enum to indicate the kind.
Closes https://github.com/Microsoft/bond/issues/232
If all of the items in the BondCodegen ItemGroup had their Options
metadata set, codegen was always invoked, as the dummy output file
bondfiles.tmp was never generated.
Now, the dummy output file (renamed to bondcodegen.done) is always
output, and the batched input file has been renamed to
bonddefaultcodegen.in.
* Logo is now embedded in the template and above the table of contents
* Move logo in README to be at the top and separated with a hr. This looks
okay when rendered by GitHub and when rendered by Pandoc.
* README.md has gotten long enough that it can use a table of contents
* Use inline bash syntax highlighting for README.md: this doesn't highlight
extra things like the python mode was doing, and looks reasonable for all
the snippets, including the Windows CMD snippets
* This also lets us to get rid of the index.html template--it was almost
identical to the default.html template, but had some formatting colors
overridden to black.
Closes https://github.com/Microsoft/bond/pull/237
* If the CMake variable BOND_LIBRARIES_ONLY is set to TRUE, then only
the Bond libraries will be built, skipping any tools. gbc will still
be built if it cannot be found, however, as gbc is needed to build the
libraries.
* The environment variable BOND_GBC_PATH is also consulted as a
directory to look for gbc in.
* We now use the CMake `find_program` function, which also searches in a
bunch of standard CMake directories and respects a bunch of
configuration points.
Move SimpleInMem transport's .bond file to IDL directory and rename
to align with naming convention for other .bond files.
Closes https://github.com/Microsoft/bond/pull/233
* [IDL Comm] Improve IDL for consistent naming
Conform to predominant IDL naming convention. Also pass service and method
names as separate strings. Minor fixups on empty string usage.
Closes [#231](https://github.com/Microsoft/bond/pull/231)
The Bond.Runtime NuGet package again only specifies a lower bound on its
Newtonsoft.JSON dependency. This reverts commit
e2be0bf3ec, which artificially limited the
upper bound to < 10. The previous behavior did not limit Bond.Runtime to
only working with Newtonsoft.Json 7.0.1. _However_, the default behavior
of NuGet (since 2.8) is to install the _lowest_ version of a package
that satisfied the constraints. This behavior can be overridden when a
package is installed, but that decision needs to be made by the consumer
of Bond.Runtime.
Closes https://github.com/Microsoft/bond/issues/212
Errors are now communicated via a separate framelet type instead. Remove ErrorCode.OK. Get more consistent w.r.t. "message", "payload", and "error" in Epoxy and SimpleInMem.
Closes https://github.com/Microsoft/bond/pull/229
`EpoxyListeners` can now be configured to require clients to authenticate
themselves with a certificate. This is configured via the
`clientCertificateRequired` parameter when creating an
`EpoxyServerTlsConfig`.
Closes https://github.com/Microsoft/bond/pull/228
The addition of `bond.TypeDef.list_sub_type` in commit
08fcff0c78 is causing compatibility issues
with users of Bond that have already serialized SchemaDef structs in
Simple Binary.
Until we can figure out a way around this, we're reverting the addition
of this field, returning `bond.TypeDef` to the schema is has had since
3.0.7.
The rest of the infrastructure for determining a ListSubType value
remains. Unit tests have been adjusted to exercise this infrastructure
directly instead of via SchemaDef/FieldDef/TypeDef.
Re-opens https://github.com/Microsoft/bond/issues/161
* Generated enum types now have a `FromEnum` method that can be used to
convert from an enum value to a string. Now generated enum types have
all four of `ToEnum`, `FromEnum`, `ToString`, and `FromString`. (The
`...Enum` variants return false on failure, while the `...String`
variants throw.)
* enumerations example updated to demonstrate all four of these
functions.
* Existing throwing `FromString` re-implemented in terms of non-throwing
`ToEnum`.
* `ToString` is intentionally not implemented in terms of `FromEnum`, as
`ToString` returns a reference to the name stored in the map.
`FromEnum` copies this name into the output paramater.
Fixes https://github.com/Microsoft/bond/pull/223
* Epoxy connections can now be secured using TLS. Only server authentication
is currently supported.
* epoxy:// parsing updated to support epoxys://
* Mutual client/server authentication supported.
* `EpoxySocket` renamed to `EpoxyNetworkStream` and refactored to handle
stream establishment.
Closes https://github.com/Microsoft/bond/pull/200
Cache the EpoxyListener endpoint information so that it can be accessed
after socket shutdown for things like logging.
This resolves a sporadic unit test failure.
Minor adjustments to match style guide for things like private and
readonly.
Closes https://github.com/Microsoft/bond/pull/222
Error now has a nullable<bonded<Error>> inner_error field. If multiple
errors need to be represented, the AggregateError struct and its error
code, MultipleErrorsOccured, can be used to collect these up.
Closes https://github.com/Microsoft/bond/pull/214
`PreferredToolArchitecture=x64` should be set before running the cmake generate command. This way the cmake cache will have the correct compilers and linkers.
Previously, the tests were failing, but the failure exceptions were getting
swallowed by an async void function. Additionally, this increases the length of
the pause for metrics to settle.
Closes https://github.com/Microsoft/bond/pull/221
- Separate .bond IDL files from language binding implementations.
- Convert comm IDL files to use C++-style naming convention.
Closes https://github.com/Microsoft/bond/pull/219
* nullable's move constructors and set member function sometimes invoke
new_value, which may perform an allocation that may throw.
* value_common's move constructor copies the input Reader, so it needs
to be conditionally noexcept on being able to make a copy.
Closes https://github.com/Microsoft/bond/pull/215