Skip to content

Qactive 2.1.0

Latest
Compare
Choose a tag to compare
@RxDave RxDave released this 09 Jul 20:02
· 23 commits to master since this release

Note: I've tagged the wrong commit. The actual commit for v2.1.0 is 39a5509.

New In This Release

  • Upgraded to Rx 3.0 for all targets (except for the .NET 4.0 libraries, since Rx 3.0 doesn't support it. They still require Rx 2.2.5.)
  • Fixed a major bug that introduced a subtle race condition, sometimes resulting in duplex observable notifications to be observed in the wrong order; i.e., not the order in which they were sent/received.
  • Custom expression visitors can now be added to the QbservableServiceOptions instance that you pass to the service operators/factories, allowing you to easily view or manipulate the expression tree before it's processed, without having to build your own IQbservableProvider implementation.
  • Implemented graceful socket shutdown in the golden path.
  • Improved ShutdownReason by making QbservableProtocolShutdownReason a Flags enum. Client termination notifications now include an accurate account of the reasons for shutdown. When logging the reason, you'll often see a comma-separated list; e.g., ObservableTerminated, ClientTerminated, meaning that the observable terminated and then the client initiated the socket shutdown process.
  • Added support for specifying 0 as the service port on the host. This worked previously, but the provider's EndPoint property remains 0 because it represents more than one potential host simultaneously, each with distinct ports. To acquire the port that TCP chooses when you specify 0, the ITcpQactiveProviderTransportInitializer interface has two new methods: StartedListener and StoppedListener. Each provides the server number and the real TCP-selected port (in the form of the full EndPoint) as parameters. This is technically a breaking API change but since it's not very significant I'll treat it as minor. (As a bonus, the unit tests now generate unique server ports, so they can be run in parallel.)
  • Starting, stopping, connecting and disconnecting, are now all being traced by the TCP provider for logging and diagnostic purposes.
  • Improved QbservableServiceOptions's Add method so that it can be called when IsFrozen is true; in that case, a clone is returned instead.
  • Defined new types in Qactive.Expressions: ExpressionEqualityComparer and EqualityExpressionVisitor. They are not used in Qactive's libraries. Currently, they are only used for unit testing.

New In Recent Releases

  • Added .NET 4.0 to the NuGet packages.
  • Subject and variants are now interpreted as duplex observables, without having to cast to IObservable<T> first.
  • Non-closure duplex callbacks are now supported; e.g., providerSource.CombineLatest(localObservable, ...)
  • Logging improvements.
  • Error handling improvements.
  • Bug fixes.
  • Unit tests.

Download from NuGet

Qactive.Providers.Tcp

Depends on Rx, Qactive.Providers.Streaming, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0

Qactive.Providers.Streaming

Depends on Rx, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0

Qactive

Depends on Rx
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0, ASP.NET Core 1.0, Windows 8, Windows Phone 8.1, Xamarin.Android, Xamarin.iOS

Qactive.Expressions

No dependencies
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0