267 lines
4.8 KiB
Go
267 lines
4.8 KiB
Go
package libuv
|
|
|
|
import (
|
|
_ "unsafe"
|
|
|
|
"github.com/goplus/llgo/c"
|
|
"github.com/goplus/llgo/c/net"
|
|
)
|
|
|
|
const (
|
|
LLGoPackage = "link: $(pkg-config --libs libuv); -luv"
|
|
LLGoFiles = "$(pkg-config --cflags libuv): _wrap/libuv.c"
|
|
)
|
|
|
|
// ----------------------------------------------
|
|
const (
|
|
RUN_DEFAULT RunMode = iota
|
|
RUN_ONCE
|
|
RUN_NOWAIT
|
|
)
|
|
|
|
const (
|
|
LOOP_BLOCK_SIGNAL LoopOption = iota
|
|
METRICS_IDLE_TIME
|
|
)
|
|
|
|
const (
|
|
UV_LEAVE_GROUP Membership = iota
|
|
UV_JOIN_GROUP
|
|
)
|
|
|
|
const (
|
|
UNKNOWN_HANDLE HandleType = iota
|
|
ASYNC
|
|
CHECK
|
|
FS_EVENT
|
|
FS_POLL
|
|
HANDLE
|
|
IDLE
|
|
NAMED_PIPE
|
|
POLL
|
|
PREPARE
|
|
PROCESS
|
|
STREAM
|
|
TCP
|
|
TIMER
|
|
TTY
|
|
UDP
|
|
SIGNAL
|
|
FILE
|
|
HANDLE_TYPE_MAX
|
|
)
|
|
|
|
const (
|
|
UNKNOWN_REQ ReqType = iota
|
|
REQ
|
|
CONNECT
|
|
WRITE
|
|
SHUTDOWN
|
|
UDP_SEND
|
|
FS
|
|
WORK
|
|
GETADDRINFO
|
|
GETNAMEINFO
|
|
RANDOM
|
|
REQ_TYPE_PRIVATE
|
|
REQ_TYPE_MAX
|
|
)
|
|
|
|
const (
|
|
READABLE PollEvent = 1 << iota
|
|
WRITABLE
|
|
DISCONNECT
|
|
PRIPRIORITIZED
|
|
)
|
|
|
|
type RunMode c.Int
|
|
|
|
type LoopOption c.Int
|
|
|
|
type Membership c.Int
|
|
|
|
type HandleType c.Int
|
|
|
|
type ReqType c.Int
|
|
|
|
type OsSock c.Int
|
|
|
|
type OsFd c.Int
|
|
|
|
type PollEvent c.Int
|
|
|
|
// ----------------------------------------------
|
|
|
|
/* Handle types. */
|
|
|
|
type Loop struct {
|
|
Unused [0]byte
|
|
}
|
|
|
|
type Poll struct {
|
|
Data c.Pointer
|
|
Unused [160]byte
|
|
}
|
|
|
|
/* Request types. */
|
|
|
|
type Buf struct {
|
|
Base *c.Char
|
|
Len uintptr
|
|
} // ----------------------------------------------
|
|
|
|
/* Function type */
|
|
|
|
// llgo:type C
|
|
type MallocFunc func(size uintptr) c.Pointer
|
|
|
|
// llgo:type C
|
|
type ReallocFunc func(ptr c.Pointer, size uintptr) c.Pointer
|
|
|
|
// llgo:type C
|
|
type CallocFunc func(count uintptr, size uintptr) c.Pointer
|
|
|
|
// llgo:type C
|
|
type FreeFunc func(ptr c.Pointer)
|
|
|
|
// llgo:type C
|
|
type AllocCb func(handle *Handle, suggestedSize uintptr, buf *Buf)
|
|
|
|
// llgo:type C
|
|
type GetaddrinfoCb func(req *GetAddrInfo, status c.Int, res *net.AddrInfo)
|
|
|
|
// llgo:type C
|
|
type GetnameinfoCb func(req *GetNameInfo, status c.Int, hostname *c.Char, service *c.Char)
|
|
|
|
// llgo:type C
|
|
type WalkCb func(handle *Handle, arg c.Pointer)
|
|
|
|
// llgo:type C
|
|
type PollCb func(handle *Poll, status c.Int, events c.Int)
|
|
|
|
// ----------------------------------------------
|
|
|
|
//go:linkname Version C.uv_version
|
|
func Version() c.Uint
|
|
|
|
//go:linkname VersionString C.uv_version_string
|
|
func VersionString() *c.Char
|
|
|
|
//go:linkname LibraryShutdown C.uv_library_shutdown
|
|
func LibraryShutdown()
|
|
|
|
//go:linkname ReplaceAllocator C.uv_replace_allocator
|
|
func ReplaceAllocator(mallocFunc MallocFunc, reallocFunc ReallocFunc, callocFunc CallocFunc, freeFunc FreeFunc) c.Int
|
|
|
|
// ----------------------------------------------
|
|
|
|
/* Loop related functions and method. */
|
|
|
|
//go:linkname DefaultLoop C.uv_default_loop
|
|
func DefaultLoop() *Loop
|
|
|
|
//go:linkname LoopSize C.uv_loop_size
|
|
func LoopSize() uintptr
|
|
|
|
// llgo:link (*Loop).Run C.uv_run
|
|
func (loop *Loop) Run(mode RunMode) c.Int {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link (*Loop).Alive C.uv_loop_alive
|
|
func (loop *Loop) Alive() c.Int {
|
|
return 0
|
|
}
|
|
|
|
// void uv_stop(uv_loop_t *loop)
|
|
//
|
|
// llgo:link (*Loop).Stop C.uv_stop
|
|
func (loop *Loop) Stop() {}
|
|
|
|
// llgo:link (*Loop).Close C.uv_loop_close
|
|
func (loop *Loop) Close() c.Int {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link (*Loop).Configure C.uv_loop_configure
|
|
func (loop *Loop) Configure(option LoopOption, arg c.Int) c.Int {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link LoopDefault C.uv_default_loop
|
|
func LoopDefault() *Loop {
|
|
return nil
|
|
}
|
|
|
|
// llgo:link (*Loop).Delete C.uv_loop_delete
|
|
func (loop *Loop) Delete() c.Int {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link (*Loop).Fork C.uv_loop_fork
|
|
func (loop *Loop) Fork() c.Int {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link (*Loop).Init C.uv_loop_init
|
|
func (loop *Loop) Init() c.Int {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link LoopNew C.uv_loop_new
|
|
func LoopNew() *Loop {
|
|
return nil
|
|
}
|
|
|
|
// llgo:link (*Loop).Now C.uv_now
|
|
func (loop *Loop) Now() c.UlongLong {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link (*Loop).UpdateTime C.uv_update_time
|
|
func (loop *Loop) UpdateTime() {
|
|
// No return value needed for this method
|
|
}
|
|
|
|
// llgo:link (*Loop).BackendFd C.uv_backend_fd
|
|
func (loop *Loop) BackendFd() c.Int {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link (*Loop).BackendTimeout C.uv_backend_timeout
|
|
func (loop *Loop) BackendTimeout() c.Int {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link (*Loop).Walk C.uv_walk
|
|
func (loop *Loop) Walk(walkCb WalkCb, arg c.Pointer) {
|
|
// No return value needed for this method
|
|
}
|
|
|
|
// ----------------------------------------------
|
|
|
|
/* Buf related functions and method. */
|
|
|
|
//go:linkname InitBuf C.uv_buf_init
|
|
func InitBuf(base *c.Char, len c.Uint) Buf
|
|
|
|
// ----------------------------------------------
|
|
|
|
/* Poll related function and method */
|
|
|
|
//go:linkname PollInit C.uv_poll_init
|
|
func PollInit(loop *Loop, handle *Poll, fd OsFd) c.Int
|
|
|
|
//go:linkname PollInitSocket C.uv_poll_init_socket
|
|
func PollInitSocket(loop *Loop, handle *Poll, socket c.Int) c.Int
|
|
|
|
// llgo:link (*Poll).Start C.uv_poll_start
|
|
func (handle *Poll) Start(events c.Int, cb PollCb) c.Int {
|
|
return 0
|
|
}
|
|
|
|
// llgo:link (*Poll).Stop C.uv_poll_stop
|
|
func (handle *Poll) Stop() c.Int {
|
|
return 0
|
|
}
|