From 773c007abc8ab41cc14ad635f51366f98f52b920 Mon Sep 17 00:00:00 2001 From: James Watson Date: Thu, 19 Jul 2018 16:18:36 +0100 Subject: [PATCH] Port to 1.10.2 --- RELEASE.md | 2 +- driver/Aeron.Driver.nuspec | 2 +- driver/media-driver.jar | Bin 2223680 -> 2251280 bytes driver/version.txt | 2 +- ...build-prerelease-nuget-packages - Copy.bat | 19 ++ src/Adaptive.Aeron/Adaptive.Aeron.csproj | 2 +- src/Adaptive.Aeron/Aeron.cs | 1 - src/Adaptive.Aeron/ClientConductor.cs | 47 ++- src/Adaptive.Agrona/Adaptive.Agrona.csproj | 2 +- .../Adaptive.Archiver.csproj | 2 +- src/Adaptive.Archiver/AeronArchive.cs | 54 +++- src/Adaptive.Archiver/ArchiveProxy.cs | 22 ++ ...StopRecordingSubscriptionRequestDecoder.cs | 302 ++++++++++++++++++ ...StopRecordingSubscriptionRequestEncoder.cs | 209 ++++++++++++ .../aeron-archive-codecs.xml | 8 + src/Adaptive.Cluster/Adaptive.Cluster.csproj | 2 +- .../Codecs/StopCatchupDecoder.cs | 243 ++++++++++++++ .../Codecs/StopCatchupEncoder.cs | 177 ++++++++++ .../Service/ClusteredServiceAgent.cs | 8 +- .../Service/ServiceHeartbeat.cs | 8 +- src/Adaptive.Cluster/aeron-cluster-codecs.xml | 7 + 21 files changed, 1093 insertions(+), 26 deletions(-) create mode 100644 scripts/build-prerelease-nuget-packages - Copy.bat create mode 100644 src/Adaptive.Archiver/Codecs/StopRecordingSubscriptionRequestDecoder.cs create mode 100644 src/Adaptive.Archiver/Codecs/StopRecordingSubscriptionRequestEncoder.cs create mode 100644 src/Adaptive.Cluster/Codecs/StopCatchupDecoder.cs create mode 100644 src/Adaptive.Cluster/Codecs/StopCatchupEncoder.cs diff --git a/RELEASE.md b/RELEASE.md index b15f5cf3..10f91775 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,4 +1,4 @@ #### Port Aeron.NET has been ported against Java version: - Agrona: 0.9.18-13-g0378ffa -- Aeron: 1.10.1 +- Aeron: 1.10.2 diff --git a/driver/Aeron.Driver.nuspec b/driver/Aeron.Driver.nuspec index 266cab04..6f81462e 100644 --- a/driver/Aeron.Driver.nuspec +++ b/driver/Aeron.Driver.nuspec @@ -2,7 +2,7 @@ Aeron.Driver - 1.10.1 + 1.10.2 Aeron Driver Adaptive Financial Consulting Ltd. Adaptive Financial Consulting Ltd. diff --git a/driver/media-driver.jar b/driver/media-driver.jar index 1b688470d09125a797960e206a53421e386819dd..b890a97b55685e3279b556608077c64b3f3480fb 100644 GIT binary patch delta 364626 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