zhangmeng
2020-12-01 c95e44f010c06f82d95d4264a90ec230e4bf307e
add server socket
4个文件已修改
84 ■■■■■ 已修改文件
bhomebus.go 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
libcbhomebus.c 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
libcbhomebus.h 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
libcbhomebus_func.h 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bhomebus.go
@@ -577,3 +577,36 @@
    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))
}
libcbhomebus.c
@@ -328,4 +328,28 @@
        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);
}
libcbhomebus.h
@@ -44,6 +44,9 @@
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
@@ -82,6 +85,10 @@
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
@@ -129,6 +136,9 @@
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
}
libcbhomebus_func.h
@@ -190,6 +190,21 @@
 */
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