Date format: YYYY/MM/DD (ISO)
- Add the FishScan event.
- Update dependencies.
ZoneIDnow implementsIEquatable<ZoneID>, IEquatable<uint>.- Update dependencies.
- Add target for net9.0.
- Update dependencies.
- Add target for net9.0.
- Update dependencies.
- Add target for net9.0.
- 🚨 Breaking Change: Removed
CensusQueryOptions.ServiceIDs, and associated service-id rotation behaviour. This has been noted to have no effect by the Census developers. - 🐛 Bugfix:
QueryBuilder.WithCustomParameterno longer results in invalid query strings - thanks @bigwoke. QueryBuildernow allowsWithDistinctFieldValuesto be used with any other commands/filters.QueryBuilderno longer ignoresWithLimitwhenWithLimitPerDatabaseis specified.QueryBuilderhas a new constructor that allows specifying the collection to query.- New
IQueryBuilderFactory.Getoverload that allows specifying the collection to query. - Update dependencies.
- Add target for net9.0.
- 🚨 Breaking Change: The CamelCaseJsonNamingPolicy class has been removed, as it is no longer used internally.
It was an exceedingly domain-specific implementation, and should not have been
public.
- Changed the JSON serialization of commands to use a proper camelCase property name converter. The existing converter was PascalCase. This fixes compatibility with the NSS third-party Event-Stream wrapper.
- Added a parameter to
AddPayloadHandlerandRegisterPreDispatchHandlerto allow changing the service lifetime under which handlers are registered. SeeProgram.csin the ESS sample for a demonstration (which also fixes theDuplicatePreventionPreDispatchHandlerbeing non-functional in the ESS sample).
- Fixed a bug in the new
ReadOnlySequence-based data processing that causes errors when deserializing JSON data larger than the size of a single segment (4096 bytes).
🚨 Breaking Change - The BaseEventStreamClient.HandlePayloadAsync method is now passed a ReadOnlySequence<byte>,
rather than a MemoryStream. Consumers will need to use other overloads of the System.Text.Json APIs to process the
data, or convert the sequence back into a stream using similar to the following logic:
protected override async ValueTask HandlePayloadAsync(ReadOnlySequence<byte> data, CancellationToken ct)
{
MemoryStream ms = new(data.ToArray());
// ...
}This change was made to remove the dependency on Microsoft.IO.RecyclableMemoryStream while still retaining pooled
memory allocations in the BaseEventStreamClient.
- Update to support breaking change in EventStream-v3.0.0.
- Now compatible with Native AOT and trimming, via new APIs that support using
JsonTypeInfo. - Remove explicit target for net7.0.
- Guard against usage of
ClientWebSocket.Options.KeepAliveIntervalon browser platforms. - Remove explicit target for net7.0.
- Remove explicit target for net7.0.
- Now compatible with Native AOT and trimming, via new APIs that support using
JsonTypeInfo. - Remove unused
CensusRestClient.IsDisposedproperty. - Remove explicit target for net7.0.
- Added support for .NET 8.0.
- Fixed
EventNames#PlayerLogoutpointing to the PlayerLogin event - thanks @thelostv. - Fixed the thread-safety of
BaseEventStreamClient#SendCommandAsync. IEchoandIServiceMessagenow support covariant generics.
- Updated dependency on
DbgCensus.EventStreamto v2.7.1. - Fixed PlayerLogin events being deserialized to
PlayerLogouttypes when using the default event type registration - thanks @thelostv.
- Improved pagination reliability on multi-database collections by using
WithLimitPerDatabase.
- Multi-target .NET 6.0 and .NET 7.0.
- Updated NuGet dependencies.
- Added the
IQueryBuilder#WithCustomParameterfunction. - An exception is now thrown when attempting to use both
ShowFieldsandHideFieldson aQueryBuilder. - Updated dependency on
DbgCensus.Coreto v2.0.1.
- Added the
Optional#GetValueOrDefaultfunction.
- Removed the circuit breaker policy. Per information from Census developers, requests are not rate-limited in any way and errors/timeouts are likely to be collection-specific.
ICensusRestClient.cs#GetPaginatedAsynccan no longer return null pages.- Added a default value of
int.MaxValueforICensusRestClient.cs#GetPaginatedAsync(pageCount).
- Removed the
IContinentUnlockevent - this was never actually implemented on the Census end. - Correctly renamed
IDeath#AttackerFireModetoAttackerFireModeID.
- Fixed
QueryType#Countreturning the wrong verb, and hence theICensusRestClient#CountAsyncmethod. - Added an
ICensusRestClient.cs#CountAsyncoverload to count results of query, rather than entire collection.
- ⚠ Fixed the definitions for Indar and Amerish meltdown metagame events.
- Added the new 'Haunted Bastion' metagame event definitions
- Updated dependency on
DbgCensus.Coreto v2.0.0.
Added the new 'Sudden Death' metagame event definitions.
- Added the
AttackerTeamIDandTeamIDproperties to theIVehicleDestroyevent. - Added the
TeamIDproperty to theIGainExperienceevent. - Updated dependency on
DbgCensus.Coreto v1.5.0
- Updated dependency on
DbgCensus.Coreto v1.5.0
- Added the
AttackerTeamID,IsCriticalandTeamIDproperties to theIDeathevent.
- Added the
IItemAddedevent stream type.
- Consider digit sequences as words in the snake-case JSON name converter.
- Updated dependency on
DbgCensus.Coreto v1.4.2.
- Added metagame definitions for Air Anomalies.
- Added XML documentation for various metagame definitions.
- Added the
MetagameEventDefinition#GetAlertDurationextension method.
- Updated dependency on
DbgCensus.Coreto v1.4.1
- Added the
GlobalizedStringobject.
- Updated dependency on
DbgCensus.Coreto v1.4.0
- Fixed being unable to hide join fields.
- Shift all payload dispatch logic to the DefaultPayloadDispatchService.
- Updated dependency on DbgCensus.Core to v1.3.2
- Fixed being unable to use the
hidequery command. - Added missing
limitparameter to IQueryService#DistinctAsync.
- Added a service ID rotation Polly policy. Populate the
CensusQueryOptions.ServiceIDsarray with all service IDs that you want to rotate through, and they will be rotated in order when a Census REST request fails. May be useful if you are seeing a large number of connection resets. - Fixed deserialization to enumerable types when only one element was returned by the query.
- Added support for changing query options at runtime in the QueryBuilderFactory by using IOptionsMonitor.
- Shifted the
CensusLanguageandCensusNamespacetypes to theDbgCensus.Rest.Objectsnamespace. - Use of Polly policies can now be configured when calling
AddCensusRestServices. - Removed the
QueryBuilder(string serviceID, string censusNamespace, string rootEndpoint)constructor. - The
CensusRestClientis no longer disposable. - Allow a limit to be specified in
ICensusRestClient#DistinctAsync. - Updated dependency on
DbgCensus.Corev1.3.2
- Added the Oshur Conquest alert definition (226).
CensusRestClient#GetPaginatedAsyncnow breaks when the results count is less than the page size.
- Fixed the
OptionalJsonConverterfor cases where theOptional<T>contained no value.
- Updated dependency on
DbgCensus.Coreto v1.3.1.
- Added the
Optional<TValue>struct, which can be used in Census data models to indicate fields that may be missing (read: optional) in the response.
- Updated dependency on
DbgCensus.Coreto v1.3.0.
- Fixed
PlayerFacilityDefendinheriting from the wrong interface
- An exception is no longer thrown when deserializing multiple query elements to a non-enumerable type. The new behaviour is as follows:
- A Census response containing no elements returns the
defaulttype. - A Census response containing only one element returns the deserialized value of that element.
- A Census response containing multiple elements returns the deserialized value of the entire element array.
- A Census response containing no elements returns the
- Converted many
uintparameters on query interfaces toints.
- Added the
DefaultPayloadDispatchService, which implements the required logic for payload dispatching. This service is registered as a singleton and can be retrieved by injecting anIPayloadDispatchServiceinstance. - Correspondingly, the
EventHandlingEventStreamClientno longer implements theIPayloadDispatchServiceinterface.
ICensusRestClientno longer inherits fromIDisposable.CensusRestClientnow directly implementsIDisposable.
- Fixed event dispatching!
- Added pre-dispatch event handlers.
- Added the
InstanceIDandMetagameEventStateNameproperties toIMetagameEvent. - Added
EventNames#GetExperienceEventNameas a util to retrieve a valid event name for a given experience event ID. BaseEventStreamClient#HandlePayloadAsyncnow returns a ValueTask.
- Updated dependency on DbgCensus.EventStream to v2.3.0
- Converted
ZoneIdto a readonly struct, using computed properties for theInstanceandDefinitionproperties.
- Updated dependency on DbgCensus.Core to v1.2.0
- Added the IPayloadDispatchService interface, and implemented it in the EventHandlingEventStreamClient. This allows custom payloads to be dispatched.
- Fixed
IEventStreamClientFactory#GetClientwhen retrieving a client for a dedicated generic consumer. - The
BaseEventStreamClientnow disposes of the data stream passed toHandlePayloadAsync. BaseEventStreamClient#Nameis now a readonly-property.
- The
JoinBuilder,TreeBuilderandQueryBuildertypes are now sealed. - The
SearchModifierenumeration is now ashortdata type. StringUtils#SafeToStringnow expects a generically-typed object, rather than anobjectparameter.
- Significant performance improvement to event dispatch by caching the retrieved
MethodInfo.
- Added Oshur zone and metagame event (meltdown only) definitions.
- Fix reconnection flow and improve start/stop logic
- Improve disposable implementation.
-
The
CharactersandWorldsproperties on theISubscribecommand now use aOneOf<>object to be stricter about the type of subscription you can make. The properties accept either the specialAllvalue, or a list of their corresponding type. E.g. theWorldsproperty has a type ofOneOf<All, IEnumerable<WorldDefinition>>. -
The way that the
JsonSerializerOptionsused by theBaseEventStreamClientare configured has changed. Rather than being properties of theEventStreamOptionsclass, with configuration completed in theBaseEventStreamClientitself, theJsonSerializerOptionsare nowConfigured as named options directly to the service collection. The name of these options can be found in the newConstantsclass. -
The
BaseEventStreamClientnow properly serializes commands that were passed as an interface type, rather than their concrete type. -
The
IEventStreamClientinterface no longer inherits fromIDisposable. -
BaseEventStreamClientandEventStreamClientFactorynow implementIAsyncDisposable. TheEventStreamClientFactorynow manages its clients lifetimes.
-
The
EventHandlingEventStreamClientnow automatically refreshes its current subscription at the interval set by theEventHandlingClientOptions.SubscriptionRefreshIntervalMillisecondsproperty. This helps with scenarios where the event stream drops certain components of a subscription. -
Added
EventHandlingClientOptions. This currently only contains theSubscriptionRefreshIntervalMillisecondsproperty, that can be used to configure how frequently theEventHandlingEventStreamClientwill refresh its current subscription. This property defaults to 15min. -
The
EventHandlingEventStreamClientnow dispatches anIUnknownPayloadwhen a payload fails to deserialize and/or dispatch.
- The way that the
JsonSerializerOptionsused by theCensusRestClientare configured has changed. Rather than being properties of theCensusQueryOptionsclass, theJsonSerializerOptionsare nowConfigured as named options directly to the service collection. The name of these options can be found in the newConstantsclass.
- Changelog begins.
- Changelog begins.
- Changelog begins.
- Changelog begins.
- Changelog begins.
- Changelog begins.