Glenn,
What do you mean by "The browser only seems to signal back on its first
run"? signal back what, new services? I use Avahi-client (c api) in
Qt. Avahi-client talks to the daemon over d-bus. My callback fires
whenever a service is added or removed long after startup.
On 15-09-01 02:28 PM, Glenn Martin wrote:
My team and i are trying to integrate Avahi via DBUS in Go
(golang.org). I have read through the documentation and i have worked
with the python bindings as a guide, we have basic browsing working,
however we seem to be running in to a few unexpected issues.
The browser (http://avahi.org/download/ServiceBrowser.introspect.xml)
only seems to signal back on its first run. This makes sense for
efficiencies sake, however in cases of things such as unit tests, this
means that the code that tests various lookups fail on subsequent
runs. Given that we are following a light form of TDD this is
becomming a real issue.
Is there anyway to clear the Browser's cache or make it repeat values?
Or perhaps have some way to know when a session is over and the next
request will require a full update, not just a differential? Code
example at EOF.
Thanks!
Glenn Martin
// The following is a messy excerpt from the code we are presently
using to test. Many of the constants are stolen from the python
bindings found here:
http://git.0pointer.net/avahi.git/tree/avahi-python/avahi/__init__.py
sysbus, err := dbus.SystemBusPrivate()
if err != nil {
return err
}
defer sysbus.Close()
if err = sysbus.Auth(nil); err != nil {
return err
}
if err = sysbus.Hello(); err != nil {
return err
}
logs.Infof("SysBus => %+ v", sysbus)
/* Lets get our Service object */
avahiObject := sysbus.Object(DBUS_NAME, DBUS_PATH_SERVER)
logs.Infof("Avahi Object => %+v", avahiObject)
/* Were gonna need this for resolution later. */
var items []serviceBrowserRecord = []serviceBrowserRecord{}
/* Now lets listen to our ServiceBrowser and Listen in to its wisdom */
c := avahiObject.Call("ServiceBrowserNew", 0, IF_UNSPEC, PROTO_UNSPEC,
service, "local", uint32(0))
if c.Err != nil {
panic(c.Err)
}
logs.Infof("Browser Object Response => %+v", c)
browserObject := sysbus.Object(DBUS_INTERFACE_SERVICE_BROWSER,
c.Body[0].(dbus.ObjectPath))
defer browserObject.Call("Free", 0)
logs.Infof("Browser Object => %+v", browserObject)
browserMatchingRule :=
fmt.Sprintf("type='signal',path='%s',interface='%s',sender='%s'",
c.Body[0].(dbus.ObjectPath), DBUS_INTERFACE_SERVICE_BROWSER,
DBUS_INTERFACE_SERVICE_BROWSER)
sysbus.BusObject().Call(DBUS_OFD_ADD_MATCH, 0, browserMatchingRule)
ch := make(chan *dbus.Signal, 10)
sysbus.Signal(ch)
breakIt := false
for v := range ch {
logs.Infof("SIG => %+v",v)
}
_______________________________________________
avahi mailing list
avahi@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/avahi
--
Jonathan Bagg
Embedded Systems Developer
NAD Electronics | Lenbrook Industries Limited
633 Granite Court, Pickering, Ontario, Canada L1W 3K1 | 905-831-0799 ext 4478 |
http://www.nadelectronics.com
_______________________________________________
avahi mailing list
avahi@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/avahi