Skip to content

Commit 67b2796

Browse files
committed
Adopt new conference peer nick/list_changed callbacks.
1 parent 7d2dde3 commit 67b2796

File tree

8 files changed

+64
-53
lines changed

8 files changed

+64
-53
lines changed

.travis.yml

+13-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
language: go
2-
compiler: clang
32
sudo: required
43

54
addons:
@@ -12,21 +11,22 @@ addons:
1211
- libsodium-dev
1312
- libvpx-dev
1413

15-
go:
16-
#- 1.4.x
17-
#- 1.5.x
18-
#- 1.6.x
19-
#- 1.7.x
20-
#- 1.8.x
21-
#- 1.9.x
22-
- master
14+
matrix:
15+
include:
16+
- go: 1.7.x
17+
if: type IN (push, api, cron)
18+
- go: 1.8.x
19+
if: type IN (push, api, cron)
20+
- go: 1.9.x
21+
if: type IN (push, api, cron)
22+
- go: master
2323

2424
before_install:
2525
- go get github.com/mattn/goveralls
2626

2727
install:
2828
# Add libclang's lib directory to search path for Go.
29-
- export CGO_LDFLAGS="-L`llvm-config --libdir`"
29+
- export CGO_LDFLAGS="-L`llvm-config-3.4 --libdir`"
3030
# Install toxcore.
3131
- git clone https://github.com/TokTok/c-toxcore
3232
- cd c-toxcore
@@ -37,14 +37,16 @@ install:
3737
- sudo ldconfig > /dev/null
3838
# Install Go packages.
3939
- go get github.com/bitly/go-simplejson
40-
- go get github.com/go-clang/v3.8/clang
40+
- go get github.com/go-clang/v3.4/clang
4141
- go get github.com/kitech/godsts/maps/hashbidimap
4242
- go get github.com/kitech/godsts/maps/hashmap
4343
- go get github.com/kitech/godsts/sets/hashset
4444
- go get github.com/masatana/go-textdistance
4545
- go get github.com/sasha-s/go-deadlock
46+
- go get github.com/streamrail/concurrent-map
4647
- go get github.com/sysr-q/gopp/gopp
4748
- go get github.com/xrash/smetrics
4849

4950
script:
51+
- go run tools/generrmsg.go > const_auto.go && git diff --exit-code
5052
- $GOPATH/bin/goveralls -service=travis-ci

const.go

-7
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,6 @@ const (
5858
CONFERENCE_TYPE_AV = uint8(C.TOX_CONFERENCE_TYPE_AV)
5959
)
6060

61-
type ChatChangeType int
62-
63-
const (
64-
CONFERENCE_STATE_CHANGE_LIST_CHANGED = int(C.TOX_CONFERENCE_STATE_CHANGE_LIST_CHANGED)
65-
CONFERENCE_STATE_CHANGE_PEER_NAME_CHANGE = int(C.TOX_CONFERENCE_STATE_CHANGE_PEER_NAME_CHANGE)
66-
)
67-
6861
type CallControlType int
6962

7063
const (

group.go

+38-13
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ void callbackConferenceMessageWrapperForC(Tox *, uint32_t, uint32_t, TOX_MESSAGE
1111
// void callbackConferenceActionWrapperForC(Tox*, uint32_t, uint32_t, uint8_t*, size_t, void*);
1212
1313
void callbackConferenceTitleWrapperForC(Tox*, uint32_t, uint32_t, uint8_t*, size_t, void*);
14-
void callbackConferenceNameListChangeWrapperForC(Tox*, uint32_t, uint32_t, TOX_CONFERENCE_STATE_CHANGE, void*);
14+
void callbackConferencePeerNameWrapperForC(Tox*, uint32_t, uint32_t, uint8_t*, size_t, void*);
15+
void callbackConferencePeerListChangedWrapperForC(Tox*, uint32_t, void*);
1516
1617
// fix nouse compile warning
1718
static inline __attribute__((__unused__)) void fixnousetoxgroup() {
@@ -33,7 +34,8 @@ type cb_conference_message_ftype func(this *Tox, groupNumber uint32, peerNumber
3334

3435
type cb_conference_action_ftype func(this *Tox, groupNumber uint32, peerNumber uint32, action string, userData interface{})
3536
type cb_conference_title_ftype func(this *Tox, groupNumber uint32, peerNumber uint32, title string, userData interface{})
36-
type cb_conference_namelist_change_ftype func(this *Tox, groupNumber uint32, peerNumber uint32, change uint8, userData interface{})
37+
type cb_conference_peer_name_ftype func(this *Tox, groupNumber uint32, peerNumber uint32, name string, userData interface{})
38+
type cb_conference_peer_list_changed_ftype func(this *Tox, groupNumber uint32, userData interface{})
3739

3840
// tox_callback_conference_***
3941

@@ -135,26 +137,49 @@ func (this *Tox) CallbackConferenceTitleAdd(cbfn cb_conference_title_ftype, user
135137
C.tox_callback_conference_title(this.toxcore, (*C.tox_conference_title_cb)(C.callbackConferenceTitleWrapperForC))
136138
}
137139

138-
//export callbackConferenceNameListChangeWrapperForC
139-
func callbackConferenceNameListChangeWrapperForC(m *C.Tox, a0 C.uint32_t, a1 C.uint32_t, a2 C.TOX_CONFERENCE_STATE_CHANGE, a3 unsafe.Pointer) {
140+
//export callbackConferencePeerNameWrapperForC
141+
func callbackConferencePeerNameWrapperForC(m *C.Tox, a0 C.uint32_t, a1 C.uint32_t, a2 *C.uint8_t, a3 C.size_t, a4 unsafe.Pointer) {
140142
var this = cbUserDatas.get(m)
141-
for cbfni, ud := range this.cb_conference_namelist_changes {
142-
cbfn := *(*cb_conference_namelist_change_ftype)(cbfni)
143-
this.putcbevts(func() { cbfn(this, uint32(a0), uint32(a1), uint8(a2), ud) })
143+
for cbfni, ud := range this.cb_conference_peer_names {
144+
cbfn := *(*cb_conference_peer_name_ftype)(cbfni)
145+
peer_name := C.GoStringN((*C.char)((unsafe.Pointer)(a2)), C.int(a3))
146+
this.putcbevts(func() { cbfn(this, uint32(a0), uint32(a1), peer_name, ud) })
144147
}
145148
}
146149

147-
func (this *Tox) CallbackConferenceNameListChange(cbfn cb_conference_namelist_change_ftype, userData interface{}) {
148-
this.CallbackConferenceNameListChangeAdd(cbfn, userData)
150+
func (this *Tox) CallbackConferencePeerName(cbfn cb_conference_peer_name_ftype, userData interface{}) {
151+
this.CallbackConferencePeerNameAdd(cbfn, userData)
149152
}
150-
func (this *Tox) CallbackConferenceNameListChangeAdd(cbfn cb_conference_namelist_change_ftype, userData interface{}) {
153+
func (this *Tox) CallbackConferencePeerNameAdd(cbfn cb_conference_peer_name_ftype, userData interface{}) {
151154
cbfnp := (unsafe.Pointer)(&cbfn)
152-
if _, ok := this.cb_conference_namelist_changes[cbfnp]; ok {
155+
if _, ok := this.cb_conference_peer_names[cbfnp]; ok {
153156
return
154157
}
155-
this.cb_conference_namelist_changes[cbfnp] = userData
158+
this.cb_conference_peer_names[cbfnp] = userData
156159

157-
C.tox_callback_conference_namelist_change(this.toxcore, (*C.tox_conference_namelist_change_cb)(C.callbackConferenceNameListChangeWrapperForC))
160+
C.tox_callback_conference_peer_name(this.toxcore, (*C.tox_conference_peer_name_cb)(C.callbackConferencePeerNameWrapperForC))
161+
}
162+
163+
//export callbackConferencePeerListChangedWrapperForC
164+
func callbackConferencePeerListChangedWrapperForC(m *C.Tox, a0 C.uint32_t, a1 unsafe.Pointer) {
165+
var this = cbUserDatas.get(m)
166+
for cbfni, ud := range this.cb_conference_peer_list_changeds {
167+
cbfn := *(*cb_conference_peer_list_changed_ftype)(cbfni)
168+
this.putcbevts(func() { cbfn(this, uint32(a0), ud) })
169+
}
170+
}
171+
172+
func (this *Tox) CallbackConferencePeerListChanged(cbfn cb_conference_peer_list_changed_ftype, userData interface{}) {
173+
this.CallbackConferencePeerListChangedAdd(cbfn, userData)
174+
}
175+
func (this *Tox) CallbackConferencePeerListChangedAdd(cbfn cb_conference_peer_list_changed_ftype, userData interface{}) {
176+
cbfnp := (unsafe.Pointer)(&cbfn)
177+
if _, ok := this.cb_conference_peer_list_changeds[cbfnp]; ok {
178+
return
179+
}
180+
this.cb_conference_peer_list_changeds[cbfnp] = userData
181+
182+
C.tox_callback_conference_peer_list_changed(this.toxcore, (*C.tox_conference_peer_list_changed_cb)(C.callbackConferencePeerListChangedWrapperForC))
158183
}
159184

160185
// methods tox_conference_*

group_legacy.go

-10
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,6 @@ func (this *Tox) CallbackGroupTitleAdd(cbfn cb_group_title_ftype, userData inter
6060
this.CallbackConferenceTitleAdd(cbfn_, userData)
6161
}
6262

63-
func (this *Tox) CallbackGroupNameListChange(cbfn cb_group_namelist_change_ftype, userData interface{}) {
64-
this.CallbackGroupNameListChangeAdd(cbfn, userData)
65-
}
66-
func (this *Tox) CallbackGroupNameListChangeAdd(cbfn cb_group_namelist_change_ftype, userData interface{}) {
67-
cbfn_ := func(this *Tox, groupNumber uint32, peerNumber uint32, change uint8, userData interface{}) {
68-
cbfn(this, int(groupNumber), int(peerNumber), change, userData)
69-
}
70-
this.CallbackConferenceNameListChangeAdd(cbfn_, userData)
71-
}
72-
7363
// methods
7464
func (this *Tox) AddGroupChat() (int, error) {
7565
gn, err := this.ConferenceNew()

tools/generrmsg.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"os"
88
"strings"
99

10-
"github.com/go-clang/v3.8/clang"
10+
"github.com/go-clang/v3.4/clang"
1111
)
1212

1313
func main() {
@@ -22,9 +22,8 @@ func main() {
2222
_ = tuArgs
2323
cmdArgs := []string{
2424
"-std=c99",
25-
"-I/usr/include/",
26-
"-I/usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0/include"}
27-
tu := idx.ParseTranslationUnit("/usr/include/tox/tox.h", cmdArgs, nil, 0)
25+
"-I/usr/lib/clang/3.4/include"}
26+
tu := idx.ParseTranslationUnit("/usr/local/include/tox/tox.h", cmdArgs, nil, 0)
2827
defer tu.Dispose()
2928

3029
for _, d := range tu.Diagnostics() {

tox.go

+8-6
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,12 @@ type Tox struct {
9393
cb_friend_lossless_packets map[unsafe.Pointer]interface{}
9494
cb_self_connection_statuss map[unsafe.Pointer]interface{}
9595

96-
cb_conference_invites map[unsafe.Pointer]interface{}
97-
cb_conference_messages map[unsafe.Pointer]interface{}
98-
cb_conference_actions map[unsafe.Pointer]interface{}
99-
cb_conference_titles map[unsafe.Pointer]interface{}
100-
cb_conference_namelist_changes map[unsafe.Pointer]interface{}
96+
cb_conference_invites map[unsafe.Pointer]interface{}
97+
cb_conference_messages map[unsafe.Pointer]interface{}
98+
cb_conference_actions map[unsafe.Pointer]interface{}
99+
cb_conference_titles map[unsafe.Pointer]interface{}
100+
cb_conference_peer_names map[unsafe.Pointer]interface{}
101+
cb_conference_peer_list_changeds map[unsafe.Pointer]interface{}
101102

102103
cb_file_recv_controls map[unsafe.Pointer]interface{}
103104
cb_file_recvs map[unsafe.Pointer]interface{}
@@ -500,7 +501,8 @@ func NewTox(opt *ToxOptions) *Tox {
500501
tox.cb_conference_messages = make(map[unsafe.Pointer]interface{})
501502
tox.cb_conference_actions = make(map[unsafe.Pointer]interface{})
502503
tox.cb_conference_titles = make(map[unsafe.Pointer]interface{})
503-
tox.cb_conference_namelist_changes = make(map[unsafe.Pointer]interface{})
504+
tox.cb_conference_peer_names = make(map[unsafe.Pointer]interface{})
505+
tox.cb_conference_peer_list_changeds = make(map[unsafe.Pointer]interface{})
504506

505507
tox.cb_file_recv_controls = make(map[unsafe.Pointer]interface{})
506508
tox.cb_file_recvs = make(map[unsafe.Pointer]interface{})

tox_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ func TestGroup(t *testing.T) {
709709
}, nil)
710710

711711
groupNameChangeTimes := 0
712-
t2.t.CallbackGroupNameListChange(func(_ *Tox, groupNumber int, peerNumber int, change uint8, ud interface{}) {
712+
t2.t.CallbackConferencePeerListChanged(func(_ *Tox, groupNumber uint32, ud interface{}) {
713713
groupNameChangeTimes += 1
714714
}, nil)
715715

toxav.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ func (this *Tox) JoinAVGroupChat(friendNumber uint32, cookie string) (int, error
367367
if err != nil {
368368
return 0, errors.New("Invalid cookie:" + cookie)
369369
}
370-
var _fn = C.int32_t(friendNumber)
370+
var _fn = C.uint32_t(friendNumber)
371371
var _data = (*C.uint8_t)((unsafe.Pointer)(&data[0]))
372372
var length = len(data)
373373
var _length = C.uint16_t(length)

0 commit comments

Comments
 (0)