| | |
| | | |
| | | return int(C.wrap_fn_socket_remove_keys(libbhomebus, ckey, C.int(len(keys)))) |
| | | } |
| | | |
| | | // ServerSocket tcp |
| | | type ServerSocket struct { |
| | | socket unsafe.Pointer |
| | | } |
| | | |
| | | // ServerOpen server |
| | | func ServerOpen(port int) *ServerSocket { |
| | | if libbhomebus == nil { |
| | | return nil |
| | | } |
| | | |
| | | sock := C.wrap_fn_server_socket_open(libbhomebus, C.int(port)) |
| | | return &ServerSocket{sock} |
| | | } |
| | | |
| | | // Close close |
| | | func (s *ServerSocket) Close() { |
| | | if libbhomebus == nil { |
| | | return |
| | | } |
| | | |
| | | C.wrap_fn_server_socket_close(libbhomebus, s.socket) |
| | | } |
| | | |
| | | // Start start |
| | | func (s *ServerSocket) Start() int { |
| | | if libbhomebus == nil { |
| | | return -1 |
| | | } |
| | | |
| | | return int(C.wrap_fn_server_socket_start(libbhomebus, s.socket)) |
| | | } |
| | |
| | | check_with_ret(fn_socket_remove_keys, lib, -1); |
| | | } |
| | | return fn_socket_remove_keys((int*)keys, length); |
| | | } |
| | | } |
| | | |
| | | void *wrap_fn_server_socket_open(hbhomebus lib, int port){ |
| | | if (!fn_server_socket_open){ |
| | | fn_server_socket_open = (tfn_net_mod_server_socket_open)dlsym(lib, l_net_mod_server_socket_open); |
| | | check_with_ret(fn_server_socket_open, lib, NULL); |
| | | } |
| | | return fn_server_socket_open(port); |
| | | } |
| | | |
| | | void wrap_fn_server_socket_close(hbhomebus lib, void* _socket){ |
| | | if (!fn_server_socket_close){ |
| | | fn_server_socket_close = (tfn_net_mod_server_socket_close)dlsym(lib, l_net_mod_server_socket_close); |
| | | check_only(fn_server_socket_close, lib); |
| | | } |
| | | fn_server_socket_close(_socket); |
| | | } |
| | | |
| | | int wrap_fn_server_socket_start(hbhomebus lib, void* _socket){ |
| | | if (!fn_server_socket_start){ |
| | | fn_server_socket_start = (tfn_net_mod_server_socket_start)dlsym(lib, l_net_mod_server_socket_start); |
| | | check_with_ret(fn_server_socket_start, lib, -1); |
| | | } |
| | | return fn_server_socket_start(_socket); |
| | | } |
| | |
| | | static tfn_shm_mod_socket_remove_key fn_socket_remove_key = NULL; |
| | | static tfn_shm_mod_socket_remove_keys fn_socket_remove_keys = NULL; |
| | | |
| | | static tfn_net_mod_server_socket_open fn_server_socket_open = NULL; |
| | | static tfn_net_mod_server_socket_close fn_server_socket_close = NULL; |
| | | static tfn_net_mod_server_socket_start fn_server_socket_start = NULL; |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | | // labels |
| | |
| | | const static char l_net_mod_socket_free[] = "net_mod_socket_free"; |
| | | const static char l_shm_mod_socket_remove_key[] = "shm_mod_socket_remove_key"; |
| | | const static char l_shm_mod_socket_remove_keys[] = "shm_mod_socket_remove_keys"; |
| | | |
| | | const static char l_net_mod_server_socket_open[] = "net_mod_server_socket_open"; |
| | | const static char l_net_mod_server_socket_close[] = "net_mod_server_socket_close"; |
| | | const static char l_net_mod_server_socket_start[] = "net_mod_server_socket_start"; |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | | // dlopen dynamic library |
| | |
| | | int wrap_fn_socket_remove_key(hbhomebus lib, int key); |
| | | int wrap_fn_socket_remove_keys(hbhomebus lib, void *keys, int length); |
| | | |
| | | void *wrap_fn_server_socket_open(hbhomebus lib, int port); |
| | | void wrap_fn_server_socket_close(hbhomebus lib, void* _socket); |
| | | int wrap_fn_server_socket_start(hbhomebus lib, void* _socket); |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | |
| | | */ |
| | | typedef int(*tfn_shm_mod_socket_remove_keys) (int*, int); |
| | | |
| | | /** |
| | | * 创建 |
| | | */ |
| | | typedef void *(*tfn_net_mod_server_socket_open)(int port) ; |
| | | |
| | | /** |
| | | * 关闭 |
| | | */ |
| | | typedef void (*tfn_net_mod_server_socket_close)(void *_sockt) ; |
| | | |
| | | /** |
| | | * 启动 |
| | | */ |
| | | typedef int (*tfn_net_mod_server_socket_start)(void *_sockt); |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |