CamelService: Rewrite connect/disconnect API.
CamelService now has proper cancellable asynchronous functions for
connect and disconnect operations. The way this works is as follows:
The first service connect request runs asynchronously internally, even
if camel_service_connect_sync() is called. Subsequent connect requests
are queued until the first connect request finishes, then all requests
finish simultaneously with the same result. There are no retries; if
the first request fails, they all fail with the same error.
If a service disconnect is requested with one or more connect requests
outstanding, the connect requests are all cancelled and the disconnect
request runs asynchronously and plays by the same queueing rules.
CamelService's "connection-status" property will immediately reflect any
connect or disconnect requests in progress. Change notification signals
for this property, however, are emitted from CamelSession's main context.
14 files changed: