Releases: mannodermaus/RxBonjour
2.0.0 Beta 2
(Compatible with RxJava 2)
This is a maintenance release addressing #21, which resulted in corrupted POM definitions with missing transitive dependencies. This has been fixed, and the correct scopes are added to each dependency. There are still some limitations in regards to leaking the runtime
dependencies into the compile classpath, but that is beyond the responsibility of RxBonjour, which now declares its POM correctly.
2.0.0 Release Candidate 1
(Compatible with RxJava 2)
The first Release Candidate of RxBonjour 2 is here!
Unlike previous versions, including the Beta releases of 2.0.0
, this version replaces many of the fundamental concepts of the library & brings it to new usability levels. Not only is it completely re-architected using Kotlin, but for the first time, you can use RxBonjour in all kinds of Java projects, thanks to its cross-platform nature! Also, you are free to explore the Network Service Discovery implementation that you feel most comfortable with yourself. If you don't want to drag around JmDNS in your Android-based project, you don't have to anymore! The implementations are separate artifacts now.
In order to migrate to the new concepts, please check the following section, as well as the README for further details.
RxBonjour 2 introduces three artifacts which the library is composed of, namely the Core, a Platform and a Driver: You need one of each when building your RxBonjour
instance. This also introduces another change compared to previous versions: You don't call RxBonjour statically anymore. Instead, you configure an instance of the RxBonjour
class with the components you need, then build it. Ideally, you'd expose the configured instance via your DI container of choice, for example.
The following artifacts are available for consumption. Please check the inline comments for some info, and the README for more details:
// The core library, you always want to include this
implementation "de.mannodermaus.rxjava2:rxbonjour:2.0.0-RC1"
// Platform implementations, providing specific support as necessary.
// Hook one of the following into the RxBonjour.Builder when configuring:
// For Android applications
implementation "de.mannodermaus.rxjava2:rxbonjour-platform-android:2.0.0-RC1"
// For Desktop applications
implementation "de.mannodermaus.rxjava2:rxbonjour-platform-desktop:2.0.0-RC1"
// Driver implementations, which provide access to a Network Service Discovery stack.
// Basically, it's what drives the library under the hood. Again, hook one of the following in:
// Use JmDNS (https://github.com/jmdns/jmdns)
implementation "de.mannodermaus.rxjava2:rxbonjour-driver-jmdns:2.0.0-RC1"
// Use Android's NsdManager API (obviously only works with the AndroidPlatform)
implementation "de.mannodermaus.rxjava2:rxbonjour-driver-nsdmanager:2.0.0-RC1"
I'm really excited to hear your feedback on the new architecture. Make sure to raise issues as necessary in regards to bugs and feature requests.
1.0.1
(Compatible with RxJava 1)
This is a maintenance release addressing #21, which resulted in corrupted POM definitions with missing transitive dependencies. This has been fixed, and the correct scopes are added to each dependency. There are still some limitations in regards to leaking the runtime
dependencies into the compile classpath, but that is beyond the responsibility of RxBonjour, which now declares its POM correctly.
2.0.0 Beta 1
(Compatible with RxJava 2)
Note: This is a preview release. For the 2.x variant of RxBonjour, I'm planning to extend the scope of the library beyond what the RxJava 1 version is capable of. Namely, things like becoming agnostic to the environment (Android or Desktop) and separating implementations into separate artifacts are becoming a priority. This current version keeps a fairly simple migration path, however that is very likely to change as development on re-architecturing the way forward is proceeding.
Contrary to the 0.x releases of this library, RxBonjour doesn't apply Schedulers
to created Observables
anymore! Therefore, please make sure to add the necessary subscribeOn()
to your chains yourself from now on.
Other than that, only the package name changed, which can be dealt with using a simple Search-Replace (import rxbonjour.
→ import de.mannodermaus.rxbonjour.
).
- Updated JmDNS library
- Moved Package Namespace
- Changed Scheduler Policy
1.0.0
(Compatible with RxJava 1)
Contrary to the 0.x releases of this library, RxBonjour doesn't apply Schedulers
to created Observables
anymore! Therefore, please make sure to add the necessary subscribeOn()
to your chains yourself from now on.
Other than that, only the package name changed, which can be dealt with using a simple Search-Replace (import rxbonjour.
→ import de.mannodermaus.rxbonjour.
).
- Updated JmDNS library
- Moved Package Namespace
- Changed Scheduler Policy
0.4.0
0.3.2
- Made the regular expression that verifies DNS services more lenient, to allow for included ".local." domain in type names
0.3.1
- Multi-subscriber Support added
- Observables returned from
RxBonjour.startDiscovery()
can now be subscribed to multiple times, which is a basic feature that wasn't being paid enough attention before
- Observables returned from
- Documentation and javadocs improved
- Fixed #8: Releasing an acquired multicast lock after closing the JmDNS instance causes a race condition leading to a potential crash
0.3.0
From this version onwards, RxBonjour is available through jcenter. No need to include the jitpack.io repository anymore! Please review the artifact ID, as it has changed from com.github.aurae:RxBonjour:{version}
to com.github.aurae:rxbonjour:{version}
(note the all-lowercase).
Added IP address distinction for IPv4 and IPv6
- Thanks @IvBaranov!
BonjourService#getHost()
still works the same, but favors the IPv4 address over IPv6 if both are present- New API:
Inet4Address BonjourService#getV4Host()
returns the IPv4 address of a service, if any - New API:
Inet6Address BonjourService#getV6Host()
returns the IPv6 address of a service, if any - fixes #6
Documentation
- Improved docs for
BonjourService
methods
Internals
- Implemented the Builder pattern for
BonjourService
(fixes #7)
0.2.0
- Updated RxAndroid dependency version to 1.0.0 in order to benefit from stripped-down package; bumped minimum SDK version to 9 because of its new requirements
- Updated example as well, using latest support library & ButterKnife now
- Changed required jmDNS permissions to automatically be included by the manifest merger, as opposed to a manual copy/paste