123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- //go:build windows
- package yu_hpsocket
- import (
- "sync"
- "syscall"
- )
- func init() {
- server_callback_OnPrepareListen_ptr = syscall.NewCallback(server_callback_OnPrepareListen)
- server_callback_OnAccept_ptr = syscall.NewCallback(server_callback_OnAccept)
- server_callback_OnHandShake_ptr = syscall.NewCallback(server_callback_OnHandShake)
- server_callback_OnSend_ptr = syscall.NewCallback(server_callback_OnSend)
- server_callback_OnReceive_ptr = syscall.NewCallback(server_callback_OnReceive)
- server_callback_OnClose_ptr = syscall.NewCallback(server_callback_OnClose)
- server_callback_OnShutdown_ptr = syscall.NewCallback(server_callback_OnShutdown)
- }
- var (
- server_callback_OnPrepareListen_ptr uintptr
- server_callback_OnAccept_ptr uintptr
- server_callback_OnHandShake_ptr uintptr
- server_callback_OnSend_ptr uintptr
- server_callback_OnReceive_ptr uintptr
- server_callback_OnClose_ptr uintptr
- server_callback_OnShutdown_ptr uintptr
- )
- func server_callback_OnPrepareListen(Sender, Listen uintptr) HR {
- switch j_item := _server_on_get(Sender); j_item._type {
- case _server_type_TcpServer:
- t := j_item.t.(*TcpServer)
- return t.onPrepareListen(t, Sender, Listen)
- case _server_type_TcpPackServer:
- t := j_item.t.(*TcpPackServer)
- return t.onPrepareListen(t, Sender, Listen)
- case _server_type_HttpServer:
- t := j_item.t.(*HttpServer)
- return t.onPrepareListen(t, Sender, Listen)
- }
- return HR_OK
- }
- func server_callback_OnAccept(Sender, ConnID, Client uintptr) HR {
- switch j_item := _server_on_get(Sender); j_item._type {
- case _server_type_TcpServer:
- t := j_item.t.(*TcpServer)
- return t.onAccept(t, Sender, ConnID, Client)
- case _server_type_TcpPackServer:
- t := j_item.t.(*TcpPackServer)
- return t.onAccept(t, Sender, ConnID, Client)
- case _server_type_HttpServer:
- t := j_item.t.(*HttpServer)
- return t.onAccept(t, Sender, ConnID, Client)
- }
- return HR_OK
- }
- func server_callback_OnHandShake(Sender, ConnID uintptr) HR {
- switch j_item := _server_on_get(Sender); j_item._type {
- case _server_type_TcpServer:
- t := j_item.t.(*TcpServer)
- return t.onHandShake(t, Sender, ConnID)
- case _server_type_TcpPackServer:
- t := j_item.t.(*TcpPackServer)
- return t.onHandShake(t, Sender, ConnID)
- case _server_type_HttpServer:
- t := j_item.t.(*HttpServer)
- return t.onHandShake(t, Sender, ConnID)
- }
- return HR_OK
- }
- func server_callback_OnSend(Sender, ConnID, Data uintptr, Length uintptr) HR {
- switch j_item := _server_on_get(Sender); j_item._type {
- case _server_type_TcpServer:
- t := j_item.t.(*TcpServer)
- return t.onSend(t, Sender, ConnID, Data, Length)
- case _server_type_TcpPackServer:
- t := j_item.t.(*TcpPackServer)
- return t.onSend(t, Sender, ConnID, Data, Length)
- case _server_type_HttpServer:
- t := j_item.t.(*HttpServer)
- return t.onSend(t, Sender, ConnID, Data, Length)
- }
- return HR_OK
- }
- func server_callback_OnReceive(Sender, ConnID, Data uintptr, Length uintptr) HR {
- switch j_item := _server_on_get(Sender); j_item._type {
- case _server_type_TcpServer:
- t := j_item.t.(*TcpServer)
- return t.onReceive(t, Sender, ConnID, Data, Length)
- case _server_type_TcpPackServer:
- t := j_item.t.(*TcpPackServer)
- return t.onReceive(t, Sender, ConnID, Data, Length)
- case _server_type_HttpServer:
- t := j_item.t.(*HttpServer)
- return t.onReceive(t, Sender, ConnID, Data, Length)
- }
- return HR_OK
- }
- func server_callback_OnClose(Sender, ConnID uintptr, Operation SO, ErrorCode int) HR {
- switch j_item := _server_on_get(Sender); j_item._type {
- case _server_type_TcpServer:
- t := j_item.t.(*TcpServer)
- return t.onClose(t, Sender, ConnID, Operation, ErrorCode)
- case _server_type_TcpPackServer:
- t := j_item.t.(*TcpPackServer)
- return t.onClose(t, Sender, ConnID, Operation, ErrorCode)
- case _server_type_HttpServer:
- t := j_item.t.(*HttpServer)
- return t.onClose(t, Sender, ConnID, Operation, ErrorCode)
- }
- return HR_OK
- }
- func server_callback_OnShutdown(Sender uintptr) HR {
- switch j_item := _server_on_get(Sender); j_item._type {
- case _server_type_TcpServer:
- t := j_item.t.(*TcpServer)
- return t.onShutdown(t, Sender)
- case _server_type_TcpPackServer:
- t := j_item.t.(*TcpPackServer)
- return t.onShutdown(t, Sender)
- case _server_type_HttpServer:
- t := j_item.t.(*HttpServer)
- return t.onShutdown(t, Sender)
- }
- return HR_OK
- }
- // ---------------------------------------------------------------------------------------------------------------------
- var _server_on_lock sync.Mutex
- var _server_on = make(map[uintptr]any)
- const (
- _server_type_Server = iota
- _server_type_TcpServer
- _server_type_TcpPackServer
- _server_type_HttpServer
- )
- type _server_item struct {
- _type byte
- t any
- }
- func _server_on_set(Sender uintptr, v *_server_item) {
- _server_on_lock.Lock()
- defer _server_on_lock.Unlock()
- _server_on[Sender] = v
- }
- func _server_on_get(Sender uintptr) *_server_item {
- _server_on_lock.Lock()
- defer _server_on_lock.Unlock()
- if j_v, j_is := _server_on[Sender]; j_is {
- return j_v.(*_server_item)
- }
- return nil
- }
- func _server_on_del(Sender uintptr) {
- _server_on_lock.Lock()
- defer _server_on_lock.Unlock()
- delete(_server_on, Sender)
- }
|