Skip to content

Commit

Permalink
Implement UTP_GET_READ_BUFFER_SIZE callback
Browse files Browse the repository at this point in the history
This means the read buffer size will impact the read window. See bittorrent/libutp#82
  • Loading branch information
anacrolix committed Sep 21, 2017
1 parent 8d990f1 commit 08d74d8
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
14 changes: 14 additions & 0 deletions callbacks.go
Expand Up @@ -115,3 +115,17 @@ func acceptCallback(a *C.utp_callback_arguments) C.uint64 {
s.pushBacklog(s.newConn(a.socket))
return 0
}

//export getReadBufferSizeCallback
func getReadBufferSizeCallback(a *C.utp_callback_arguments) (ret C.uint64) {
s := libContextToSocket[a.context]
c := s.conns[a.socket]
if c == nil {
// socket hasn't been added to the Socket.conns yet. The read buffer
// starts out empty, and the default implementation for this callback
// returns 0, so we'll return that.
return 0
}
ret = C.uint64(c.readBuf.Len())
return
}
2 changes: 2 additions & 0 deletions utp.go
Expand Up @@ -18,6 +18,7 @@ uint64_t acceptCallback(utp_callback_arguments *);
uint64_t sendtoCallback(utp_callback_arguments *);
uint64_t stateChangeCallback(utp_callback_arguments *);
uint64_t readCallback(utp_callback_arguments *);
uint64_t getReadBufferSizeCallback(utp_callback_arguments *);
*/
import "C"
import "unsafe"
Expand All @@ -31,6 +32,7 @@ func (ctx *C.utp_context) setCallbacks() {
C.utp_set_callback(ctx, C.UTP_ON_STATE_CHANGE, (*C.utp_callback_t)(C.stateChangeCallback))
C.utp_set_callback(ctx, C.UTP_ON_READ, (*C.utp_callback_t)(C.readCallback))
C.utp_set_callback(ctx, C.UTP_ON_ERROR, (*C.utp_callback_t)(C.errorCallback))
C.utp_set_callback(ctx, C.UTP_GET_READ_BUFFER_SIZE, (*C.utp_callback_t)(C.getReadBufferSizeCallback))
}

func (ctx *C.utp_context) setOption(opt, val int) int {
Expand Down

0 comments on commit 08d74d8

Please sign in to comment.