Network services in trunk



Hi,

Today we finally managed to merge network services - the result of
Kyle's and Alexis' SOC 2006 projects - into SVN trunk. Network services
are now queried and results appear in both - beagle-query and beagle
search.

To enable network services in the build you have to pass the
--enable-avahi switch to configure/autogen.sh. They are disabled for the
time being.

To be able to query remote services you have to register with them. You
can do this by using either beagle-config or beagle-settings. Both tools
use Avahi to discover available services and provide them in fashioned
manner.

To make the Beagle daemon provide network services you have to launch it
with the --network argument. Other than that everything is automated.
But remember, you have to register it on the client side from which you
are querying (as mentioned above).

When using beagle-query don't forget to pass "--network yes" to get
remote results. In beagle-search searching remote services is on by
default.

I have tested the code, but as always keep your eyes open for exceptions
and crashes (which are rare, but I have seen some - most likely from
Avahi - but could not reproduce them).

On the developer side, we need to agree on a service discovery policy.
The main decision we are facing here is if we should look for new
services every time we create a new query or just use the ones that we
already added to our registered network services (either using
beagle-config or beagle-settings).

Going the first approach we are able to determine which services are
running at the moment (and also notify the user of new available
services) and after filtering them against our registered services list
we are able to make a final list of services to search.

The latter approach will probably be better performance wise since I
don't know how performance-wise service discovery is, but this shouldn't
make a difference since results come in asynchronously. So as long as it
does not affect the local return results speed we can go for whichever
we like more.

I also have a small TODO list, so if anyone wants to help it is up for
grabs!

TODO:
• BeagleClient/Query.cs - Remove duplicate code based on service
discovery policy (see below)
• Random crashes - most likely caused by Avahi
• Changes to services list in the networking config must directly
• Remote results in beagle-search should go away when remote service
shuts down
• We need to find a way to deffer the network results from the local
ones in beagle-search 
• Searching network services is on by default in beagle-search, we need
to add an option (either to beagle-settings or the main menu to disable
it)
• Service discovery happens on the daemon side for each instance of
Query as well as on the client side
• Add option to automatically search password not-protected services

There have been some minor changes to the client API, so if you
experience build problems problems or any inconsistency in your
Beagle-charged applications please give us feedback.

Best of luck! :-)

Lukas




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]