socket_api.c

来自「CS架构的多平台的GUI系统」· C语言 代码 · 共 143 行

C
143
字号
/***************************************************************************    begin                : Mon Aug 15 2005    copyright            : (C) 2005 by Alper Akcan    email                : distchx@yahoo.com ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU Lesser General Public License as        * *   published by the Free Software Foundation; either version 2.1 of the  * *   License, or (at your option) any later version.                       * *                                                                         * ***************************************************************************///#define DEBUGF debugf#define DEBUGF(...)#include "xynth_.h"typedef struct s_socket_api_s {	int (*init) (void);	int (*uninit) (void);	int (*poll) (struct pollfd *ufds, nfds_t nfds, int timeout);	int (*recv) (int s, void *read_buf, int total_size);	int (*send) (int s, void *write_buf, int total_size);	int (*socket) (int domain, int type, int protocol);	int (*bind) (int sockfd, const s_sockaddr_t *my_addr, socklen_t addrlen);	int (*listen) (int s, int backlog);	int (*accept) (int s, s_sockaddr_t *addr, socklen_t *addrlen);	int (*connect) (int sockfd, const s_sockaddr_t *serv_addr, socklen_t addrlen);	int (*close) (int fd);} s_socket_api_t;#if defined(SOCKET_BSD)	#include "socket_bsd.c"	static s_socket_api_t *s_socket_api = &s_socket_api_bsd;#elif defined(SOCKET_PIPE)	#include "socket_pipe.c"	static s_socket_api_t *s_socket_api = &s_socket_api_pipe;#else	#error "Select one of the connection methods!"#endifint s_socket_api_init (void){	if ((s_socket_api != NULL) &&	    (s_socket_api->init != NULL)) {		return s_socket_api->init();	}	return -1;}int s_socket_api_uninit (void){	if ((s_socket_api != NULL) &&	    (s_socket_api->uninit != NULL)) {		return s_socket_api->uninit();	}	return -1;}int s_socket_api_poll (struct pollfd *ufds, nfds_t nfds, int timeout){	if ((s_socket_api != NULL) &&	    (s_socket_api->poll != NULL)) {		return s_socket_api->poll(ufds, nfds, timeout);	}	return -1;}int s_socket_api_recv (int s, void *read_buf, int total_size){	if ((s_socket_api != NULL) &&	    (s_socket_api->recv != NULL)) {		return s_socket_api->recv(s, read_buf, total_size);	}	return -1;}int s_socket_api_send (int s, void *write_buf, int total_size){	if ((s_socket_api != NULL) &&	    (s_socket_api->send != NULL)) {		return s_socket_api->send(s, write_buf, total_size);	}	return -1;}int s_socket_api_socket (int domain, int type, int protocol){	if ((s_socket_api != NULL) &&	    (s_socket_api->socket != NULL)) {		return s_socket_api->socket(domain, type, protocol);	}	return -1;}int s_socket_api_bind (int sockfd, const s_sockaddr_t *my_addr, socklen_t addrlen){	if ((s_socket_api != NULL) &&	    (s_socket_api->bind != NULL)) {		return s_socket_api->bind(sockfd, my_addr, addrlen);	}	return -1;}int s_socket_api_listen (int s, int backlog){	if ((s_socket_api != NULL) &&	    (s_socket_api->listen != NULL)) {		return s_socket_api->listen(s, backlog);	}	return -1;}int s_socket_api_accept (int s, s_sockaddr_t *addr, socklen_t *addrlen){	if ((s_socket_api != NULL) &&	    (s_socket_api->accept != NULL)) {		return s_socket_api->accept(s, addr, addrlen);	}	return -1;}int s_socket_api_connect (int sockfd, const s_sockaddr_t *serv_addr, socklen_t addrlen){	if ((s_socket_api != NULL) &&	    (s_socket_api->connect != NULL)) {		return s_socket_api->connect(sockfd, serv_addr, addrlen);	}	return -1;}int s_socket_api_close (int fd){	if ((s_socket_api != NULL) &&	    (s_socket_api->close != NULL)) {		return s_socket_api->close(fd);	}	return -1;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?