-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathDataOffer.go
88 lines (69 loc) · 1.53 KB
/
DataOffer.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package gowl
import (
"bytes"
)
var _ bytes.Buffer
type DataOffer struct {
id int32
offerListeners []chan DataOfferOffer
events []func(d *DataOffer, msg message) error
name string
}
func NewDataOffer() (d *DataOffer) {
d = new(DataOffer)
d.name = "DataOffer"
d.offerListeners = make([]chan DataOfferOffer, 0)
d.events = append(d.events, dataOfferOffer)
return
}
func (d *DataOffer) HandleEvent(msg message) {
if d.events[msg.opcode] != nil {
d.events[msg.opcode](d, msg)
}
}
func (d *DataOffer) SetId(id int32) {
d.id = id
}
func (d *DataOffer) Id() int32 {
return d.id
}
func (d *DataOffer) Name() string {
return d.name
}
////
//// REQUESTS
////
func (d *DataOffer) Accept(serial uint32, typ string) {
sendrequest(d, "wl_data_offer_accept", serial, typ)
}
func (d *DataOffer) Receive(mime_type string, fd uintptr) {
sendrequest(d, "wl_data_offer_receive", mime_type, fd)
}
func (d *DataOffer) Destroy() {
sendrequest(d, "wl_data_offer_destroy", )
}
////
//// EVENTS
////
type DataOfferOffer struct {
Typ string
}
func (d *DataOffer) AddOfferListener(channel chan DataOfferOffer) {
d.offerListeners = append(d.offerListeners, channel)
}
func dataOfferOffer(d *DataOffer, msg message) (err error) {
var data DataOfferOffer
// Read typ
typ,err := readString(msg.buf)
if err != nil {
return
}
data.Typ = typ
// Dispatch events
for _,channel := range d.offerListeners {
go func () {
channel <- data
} ()
}
return
}