Commit Graph

19 Commits

Author SHA1 Message Date
Larry Osterman
e04e96cf87
Merged Rust AMQP stack with main. (#6442)
* Initial attempt at a Rust AMQP stack, merged against feature/rust_amqp for now. (#5942)

* Enabled building AMQP *without* uAMQP

* Start integrating Rust AMQP Value to C++ AMQP Value

* AMQP Value tests now pass

* Moved AmqpValueType ostream inserter to its original location

* Added Rust AMQP Message implementation

* Added start of message source tests

* Enabled building AMQP *without* uAMQP

* Start integrating Rust AMQP Value to C++ AMQP Value

* Moved AmqpValueType ostream inserter to its original location

* Message target support

* Message source and target support

* Add connection support; restructured tests to fail on RUST AMQP rather than attempting to run; removed some uAMQP-only features  (#5986)

* Checkpoint of connection logic

* Started implementing Rust based Connection by pulling out uAMQP artifacts

* Implemented AMQP Connection in Rust; started API surface refactoring for Rust APIs; Refactored tests to remove some uAMQP only elements.

* Don't leak runtime context on calls

* Refactor AMQP logic to better isolate rust AMQP code from uAMQP code. (#6008)

* refactor uAMQP and Rust AMQP into separate implementations for ease of use

* Add connection support; restructured tests to fail on RUST AMQP rather than attempting to run; removed some uAMQP-only features  (#5986)

* Checkpoint of connection logic

* Started implementing Rust based Connection by pulling out uAMQP artifacts

* Implemented AMQP Connection in Rust; started API surface refactoring for Rust APIs; Refactored tests to remove some uAMQP only elements.

* Don't leak runtime context on calls

* export UUID from AMQP

* Cleaned up some more elements; reduced scope of doxygen significantly

* runtime context needs to be process global not thread global; all tests pass or fail at this point

* Merged main into branch

* Implement AMQP Session APIs in Rust. (#6033)

* Checkpoint of rust session support

* Session begin/end now works

* Session tests pass

* Removed accidental regression

* Added rust per-call context (#6043)

* Reworked runtime context to be call context

* Added context parameter to blocking AMQP calls

* Added comments around the lifetime of the RustRuntimeContext captured in the CallContext object

* uAMQP changes corresponding to Rust changes

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* sync rust SDK fixes to C++

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Enable Rust ClaimsBasedSecurity interoperability; Converted EventHubs producer client to work with Rust AMQP changes. (#6059)

* canonicalized return values; initial CBS support

* Implementation of CBS for C++

* Amqp Authentication works; Integrate Rust AMQP into Eventhubs Producer client

* Implemented Rust AMQP message sender. (#6083)

* Initial sender implementation

* PR feedback

* Management APIs work (#6096)


* Management APIs work

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Converted builders to be compliant with Rust guidelines. (#6102)

* Converted builders to be compliant with Rust guidelines.

* Bring rust changes back to C++ repo

* Improved builder developer experience

* Removed builders from AMQP layer to conform to Rust guidelines; Fixed AMQP bug in message sender tests (#6208)

* Removed builders from AMQP layer to conform to Rust guidelines; Fixed AMQP related bug in message sender tests

* Pr feedback

* Implement receiving messages; Changes to eventhubs so that all eventhubs tests pass (#6254)


* Eventhubs tests pass

* Noise reduction; explain the task which spawns a task

* Update sdk/eventhubs/azure-messaging-eventhubs/src/producer_client.cpp

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* PR feedback

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Integrate Rust 2 step message receive code to C++ (#6349)

* Integrate Rust 2 step message receive code to C++

* If receiving a delivery failed, transmit the error to the message channel if at all possible

* Enable Rust based AMQP by default (#6362)

* AMQP tests now pass; Integrate TestAmqpBroker with CI pipeline

* Updated changelogs to reflect API changes made during AMQP updates

* Replace uAMQP with Rust AMQP as the default AMQP transport; Updated build configurationj to reflect that

* Test fixes

* PR feedback; test fixes

* Fixed uninitialized variable tanking some tests (#6381)

* Fixed uninitialized variable tanking some tests

* Fixed Rust AMQP tests

* Removed connection string support from Eventhubs and EH tests. (#6391)

* Removed the ability to use connection strings from EventHubs

* Enable Rust AMQP by default!!!

* Update CMakePresets.json

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
2025-03-11 22:30:13 +00:00
Larry Osterman
27aab786c2
AMQP Session related fixes. (#5299)
* Implemented connection handle table to fix half closed session problem

* Correctly handle session begin after connection is open

* Split out amqp settle mode to separate header; added test coverage for AMQP Transfer and Detach performatives

* Use absolute path for settle mode header
2024-01-30 15:32:58 -08:00
Ahson Khan
ada3915d6f
Fix the x64 release with perf tests CMakePresets.json by adding the missing enable-tests inheritance (#5152) 2023-11-28 16:28:55 -08:00
Larry Osterman
37e1952f71
Fixed Linux AMQP crash and many other fixes. (#5166)
* Return pointer to message rather than message; cleaned up API surface to remove uAMQP details

* ASAN configuration via CMAKE preset, not environment variable

* clang-tidy fixes
2023-11-14 23:45:24 +00:00
Larry Osterman
7b8d324540
Fixed AMQP Link Credits hang; fixed several AMQP memory leaks. (#5119)
* Add link pollable; Fixed several memory leaks

* Rule of 5 fixes for AMQP and EventHubs types; moved message handle type to _detail namespace.

* Update sdk/core/azure-core-amqp/CHANGELOG.md

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
2023-11-09 15:55:54 -08:00
Larry Osterman
51c8955d85
Vendor AMQP at commit 52942afb1a4b48a1d8af7a3ac37d3211661e3423 (#5049)
* Vendored version of uamqp

* Exclude vendored modules from cspell

* Code coverage

* Code coverage improvements

* Removed more coverage exclusions
2023-10-25 11:19:20 -07:00
Larry Osterman
ccddc7f3ed
Fully functioning eventhubs processor. (#5018)
* Functioning processor; reliability changes to azure core

* Eventhubs test fixes

* Functioning processor; cleaned up some memory leaks

* 

---------

Co-authored-by: Rick Winter <rick.winter@microsoft.com>
2023-10-24 10:45:43 -07:00
Larry Osterman
75094e2ced
Fixed cmake presets (#5044) 2023-10-18 22:58:47 +00:00
Larry Osterman
fbec02365b
clang-13 version of cstdlib doesn't define integer types in global na… (#5031)
* clang-13 version of cstdlib doesn't define integer types in global namespace

* Added clang-13 and clang-15 variants to mix

* Pull request feedback

* Update sdk/core/azure-core/inc/azure/core/uuid.hpp

* Update sdk/core/azure-core/inc/azure/core/base64.hpp

---------

Co-authored-by: Larry Osterman <larryo@LOTHAIR-HOME.ntdev.corp.microsoft.com>
2023-10-17 18:55:54 +00:00
Larry Osterman
336c8c02fb
Removed storage dependency from eventhubs (#4954)
* Removed storage dependency from eventhubs

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
2023-09-22 08:06:58 -07:00
Larry Osterman
165eace629
AMQP Stack polls for operations in a background thread. (#4914)
There are two significant parts to this fix. The first is that the Connection object now has a method EnableAsyncOperation which registers the connection with a background thread which polls the connection. The EnableAsyncOperation needs to be callable from outside the connection because in normal client operation, the calls to open the connection are all internal to uAMQP. That means that the message sender and receiver need to call it when they're opened (and closed).

The other major part of this change is that the AsyncOperationQueue now has a WaitForRequest API which does not normally poll (there is a test hook which enables polling but that is not normally used in most scenarios).

The other part of this change fixes some concurrency issues associated with the Log::Stream functionality.

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/core/azure-core/src/logger.cpp

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/core/azure-core/test/ut/CMakeLists.txt

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/core/azure-core/test/ut/logging_test.cpp

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Added ASAN as an option, converted transports to be bases to ensure consistancy

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
2023-09-13 11:12:46 -07:00
Larry Osterman
b108bf6235
Post-release updates (#4871)
* Added link credit support to message sender and receiver; reworked message receiver creation to move to the partition client object

* Added round trip test, including filters; fixed a hang with the consumer client caused by no messages; fixed checkpoint store storage names.

* EventDataBatch is created from EventProducer. Fixes #4868

* SendEventDataBatch renamed to Send; pass in Context on methods which require a context

* Added producer client send APIs without requiring an explicit event data batch

* close message receiver in destructor if it is open

* Consumer client and producer client only create message sender and receiver when needed
2023-08-17 09:52:54 -07:00
Larry Osterman
b95686b354
Reworked cmake presets to reduce presets (#4805) 2023-07-20 19:07:26 +00:00
Larry Osterman
fba91e34c9
Enabled doxygen validation in CI pipeline. (#4715)
* doxygen fixes

* enable doxygen errors now that doxygen is updated.

---------

Co-authored-by: Ahson Khan <ahkha@microsoft.com>
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
2023-06-22 18:26:07 -07:00
Ahson Khan
9d173dcd20
CMakePresets.json fixes (#4708)
Fix copy-past errors in display names within CMakePresets.json and use consistent spacing and x64 capitalization
2023-06-10 01:08:13 +00:00
Larry Osterman
0516518265
Hopefully final AMQP shape changes. (#4690)
* Added amqp_definitions_fields to list of 'special' uAMQP headers

* Tidy up x64-static-debug-perftests preset

* Moved test functions to private and use friend functions for tests; Renamed Management to ManagementClient and made it constructable from Session.

---------

Co-authored-by: Rick Winter <rick.winter@microsoft.com>
2023-06-06 09:10:39 -07:00
Larry Osterman
7066f4c956
Disable warnings for AMQP tests (#4633)
* Disable warnings for AMQP tests

* Added cmake presets for linux for ease of use.
2023-05-15 11:35:10 -07:00
Larry Osterman
68d051fe72
Merge AMQP functionality to main. (#4596)
# This pull request moves the core AMQP functionality to main. It is still very much a work in progress, but moving it to main will reduce the complexity associated with working in feature branches.



---------

Co-authored-by: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com>
Co-authored-by: Konrad Jamrozik <kojamroz@microsoft.com>
Co-authored-by: Victor Vazquez <victor.vazquez@microsoft.com>
Co-authored-by: Daniel Jurek <djurek@microsoft.com>
Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
Co-authored-by: George Arama <50641385+gearama@users.noreply.github.com>
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
Co-authored-by: Ahson Khan <ahkha@microsoft.com>
2023-05-10 20:58:39 +00:00
Larry Osterman
61003a921e
Create CMakePresets.json as an alternative to cmakesettings.json (#4429)
* Create CMakePresets.json as an alternative to cmakesettings.json

* Added (void)
2023-03-13 20:33:18 +00:00