refactor(c/libuv): general fixes & optimize code

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/libuv): optimize functions

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/libuv): mv name

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/libuv): modify libs

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/libuv): use new buffer arg

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/libuv/demo): optimize code style with go style

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/libuv): optimize code and add comment

Signed-off-by: hackerchai <i@hackerchai.com>

fix(c/libuv): fix TranslateSysError

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/libuv): remove go wrapper

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/libuv/demo): refactor c style

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/liobuv/demo): Some adjustments after removing go wrapper

refactor(c/libuv/demo): add print in echo_server

Signed-off-by: hackerchai <i@hackerchai.com>

doc(c/libuv): add README.md for c/libuv

Signed-off-by: hackerchai <i@hackerchai.com>

feat(c/libuv): implement poll_init_socket

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(c/libuv): mv poll_init_socket function

Signed-off-by: hackerchai <i@hackerchai.com>

refactor(demo): remove libuv demo

Signed-off-by: hackerchai <i@hackerchai.com>
This commit is contained in:
hackerchai
2024-07-23 11:43:02 +08:00
parent c63580ee38
commit c27c654180
11 changed files with 378 additions and 578 deletions

View File

@@ -11,6 +11,11 @@ const (
)
// ----------------------------------------------
const (
RUN_DEFAULT RunMode = iota
RUN_ONCE
RUN_NOWAIT
)
const (
LOOP_BLOCK_SIGNAL LoopOption = iota
@@ -60,6 +65,15 @@ const (
REQ_TYPE_MAX
)
const (
READABLE PollEvent = 1 << iota
WRITABLE
DISCONNECT
PRIPRIORITIZED
)
type RunMode c.Int
type LoopOption c.Int
type Membership c.Int
@@ -68,26 +82,30 @@ type HandleType c.Int
type ReqType c.Int
type Uv_File c.Int
type OsSock c.Int
type OsFd c.Int
type PollEvent c.Int
// ----------------------------------------------
/* Handle types. */
type Handle struct {
type Loop struct {
Unused [0]byte
}
type Handle struct {
Unused [96]byte
}
type Dir struct {
Unused [0]byte
}
type Stream struct {
Unused [0]byte
Unused [264]byte
}
type Pipe struct {
@@ -122,18 +140,6 @@ type Process struct {
Unused [0]byte
}
type FsEvent struct {
Unused [0]byte
}
type FsPoll struct {
Unused [0]byte
}
type Signal struct {
Unused [0]byte
}
/* Request types. */
type Req struct {
@@ -153,14 +159,17 @@ type Shutdown struct {
}
type Write struct {
Unused [0]byte
Unused [192]byte
}
type Connect struct {
Unused [0]byte
}
// ----------------------------------------------
type Buf struct {
Base *c.Char
Len uintptr
} // ----------------------------------------------
/* Function type */
@@ -200,6 +209,9 @@ type ShutdownCb func(req *Shutdown, status c.Int)
// 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
@@ -284,7 +296,7 @@ func (handle *Handle) Fileno(fd *OsFd) c.Int {
}
//go:linkname UvPipe C.uv_pipe
func UvPipe(fds [2]Uv_File, readFlags c.Int, writeFlags c.Int) c.Int {
func UvPipe(fds [2]UvFile, readFlags c.Int, writeFlags c.Int) c.Int {
return 0
}
@@ -351,22 +363,22 @@ func (stream *Stream) StopRead() c.Int {
}
// llgo:link (*Write).Write C.uv_write
func (req *Write) Write(stream *Stream, bufs []Buf, nbufs c.Uint, writeCb WriteCb) c.Int {
func (req *Write) Write(stream *Stream, bufs *Buf, nbufs c.Uint, writeCb WriteCb) c.Int {
return 0
}
// llgo:link (*Write).Write2 C.uv_write2
func (req *Write) Write2(stream *Stream, bufs []Buf, nbufs c.Uint, sendStream *Stream, writeCb WriteCb) c.Int {
func (req *Write) Write2(stream *Stream, bufs *Buf, nbufs c.Uint, sendStream *Stream, writeCb WriteCb) c.Int {
return 0
}
// llgo:link (*Stream).TryWrite C.uv_try_write
func (stream *Stream) TryWrite(bufs []Buf, nbufs c.Uint) c.Int {
func (stream *Stream) TryWrite(bufs *Buf, nbufs c.Uint) c.Int {
return 0
}
// llgo:link (*Stream).TryWrite2 C.uv_try_write2
func (stream *Stream) TryWrite2(bufs []Buf, nbufs c.Uint, sendStream *Stream) c.Int {
func (stream *Stream) TryWrite2(bufs *Buf, nbufs c.Uint, sendStream *Stream) c.Int {
return 0
}
@@ -387,6 +399,78 @@ func (stream *Stream) SetBlocking(blocking c.Int) c.Int {
// ----------------------------------------------
/* Loop related functions and method. */
//go:linkname LoopSize C.uv_loop_size
func LoopSize() uintptr
//go:linkname Run C.uv_run
func Run(loop *Loop, mode RunMode) c.Int
//go:linkname LoopAlive C.uv_loop_alive
func LoopAlive(loop *Loop) c.Int
//go:linkname LoopClose C.uv_loop_close
func LoopClose(loop *Loop) c.Int
//go:linkname LoopConfigure C.uv_loop_configure
func LoopConfigure(loop *Loop, option LoopOption, arg c.Int) c.Int
//go:linkname LoopDefault C.uv_default_loop
func LoopDefault() *Loop
//go:linkname LoopDelete C.uv_loop_delete
func LoopDelete(loop *Loop) c.Int
//go:linkname LoopFork C.uv_loop_fork
func LoopFork(loop *Loop) c.Int
//go:linkname LoopInit C.uv_loop_init
func LoopInit(loop *Loop) c.Int
//go:linkname LoopNew C.uv_loop_new
func LoopNew() *Loop
//go:linkname LoopNow C.uv_now
func LoopNow(loop *Loop) c.UlongLong
//go:linkname LoopUpdateTime C.uv_update_time
func LoopUpdateTime(loop *Loop)
//go:linkname LoopBackendFd C.uv_backend_fd
func LoopBackendFd(loop *Loop) c.Int
//go:linkname LoopBackendTimeout C.uv_backend_timeout
func LoopBackendTimeout(loop *Loop) c.Int
//go:linkname LoopWalk C.uv_walk
func LoopWalk(loop *Loop, walkCb WalkCb, arg c.Pointer)
// ----------------------------------------------
/* 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 PollStart C.uv_poll_start
func PollStart(handle *Poll, events c.Int, cb PollCb) c.Int
//go:linkname PollStop C.uv_poll_stop
func PollStop(handle *Poll) c.Int
//go:linkname PollInitSocket C.uv_poll_init_socket
func PollInitSocket(loop *Loop, handle *Poll, socket c.Int) c.Int
// ----------------------------------------------
/* Getaddrinfo related function and method */
//go:linkname Getaddrinfo C.uv_getaddrinfo