-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbrowse.go
36 lines (29 loc) · 880 Bytes
/
browse.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package goshneh
// #include "service.h"
import "C"
var browsingTypes chan string = make(chan string, 10)
var ResolvedCallback func(service Service, err error)
var RemovedCallback func(service Service)
func Browse(t string) {
browsingTypes <- t
}
//export browsing
func browsing(typeToBrowse **C.char) bool {
select {
case t := <-browsingTypes:
*typeToBrowse = C.CString(t)
return true
default:
return false
}
}
//export browseCallback
func browseCallback(service *C.Service, event uint8, err uint8, strerr *C.char) {
// OPTIMIZE: Isn't better to call callbacks in another goroutine to prevent avahi loop be blocked?
if event != ServiceRemoved && ResolvedCallback != nil {
ResolvedCallback(cService2goService(service), constructError(err, strerr))
}
if event == ServiceRemoved && RemovedCallback != nil {
RemovedCallback(cService2goService(service))
}
}