Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Publish API used by luasec v2 #346

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions src/buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include "luasocket.h"
#include "io.h"
#include "timeout.h"
#include "common.h"

/* buffer size in bytes */
#define BUF_SIZE 8192
Expand All @@ -37,13 +38,13 @@ typedef t_buffer *p_buffer;
#pragma GCC visibility push(hidden)
#endif

int buffer_open(lua_State *L);
void buffer_init(p_buffer buf, p_io io, p_timeout tm);
int buffer_meth_getstats(lua_State *L, p_buffer buf);
int buffer_meth_setstats(lua_State *L, p_buffer buf);
int buffer_meth_send(lua_State *L, p_buffer buf);
int buffer_meth_receive(lua_State *L, p_buffer buf);
int buffer_isempty(p_buffer buf);
LUASOCKET_API int buffer_open(lua_State *L);
LUASOCKET_API void buffer_init(p_buffer buf, p_io io, p_timeout tm);
LUASOCKET_API int buffer_meth_getstats(lua_State *L, p_buffer buf);
LUASOCKET_API int buffer_meth_setstats(lua_State *L, p_buffer buf);
LUASOCKET_API int buffer_meth_send(lua_State *L, p_buffer buf);
LUASOCKET_API int buffer_meth_receive(lua_State *L, p_buffer buf);
LUASOCKET_API int buffer_isempty(p_buffer buf);

#ifndef _WIN32
#pragma GCC visibility pop
Expand Down
16 changes: 16 additions & 0 deletions src/common.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#ifndef LUASOCKET_COMMON_H
#define LUASOCKET_COMMON_H

#ifndef LUASOCKET_API
#define LUASOCKET_API extern
#endif

#ifndef UNIX_API
#define UNIX_API extern
#endif

#ifndef MIME_API
#define MIME_API extern
#endif

#endif
7 changes: 4 additions & 3 deletions src/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@
\*=========================================================================*/
#include "luasocket.h"
#include "timeout.h"
#include "common.h"

/* IO error codes */
enum {
IO_DONE = 0, /* operation completed successfully */
IO_TIMEOUT = -1, /* operation timed out */
IO_CLOSED = -2, /* the connection has been closed */
IO_UNKNOWN = -3
IO_UNKNOWN = -3
};

/* interface to error message function */
Expand Down Expand Up @@ -60,8 +61,8 @@ typedef t_io *p_io;
#pragma GCC visibility push(hidden)
#endif

void io_init(p_io io, p_send send, p_recv recv, p_error error, void *ctx);
const char *io_strerror(int err);
LUASOCKET_API void io_init(p_io io, p_send send, p_recv recv, p_error error, void *ctx);
LUASOCKET_API const char *io_strerror(int err);

#ifndef _WIN32
#pragma GCC visibility pop
Expand Down
22 changes: 9 additions & 13 deletions src/makefile
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ SO_macosx=so
O_macosx=o
CC_macosx=gcc
DEF_macosx= -DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN
CFLAGS_macosx=$(LUAINC:%=-I%) $(DEF) -Wall -O2 -fno-common
CFLAGS_macosx=$(LUAINC:%=-I%) $(DEF) -Wall -fno-common
LDFLAGS_macosx= -bundle -undefined dynamic_lookup -o
LD_macosx=gcc
SOCKET_macosx=usocket.o
Expand All @@ -174,8 +174,7 @@ SO_linux=so
O_linux=o
CC_linux=gcc
DEF_linux=-DLUASOCKET_$(DEBUG)
CFLAGS_linux=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra \
-Wimplicit -O2 -ggdb3 -fpic
CFLAGS_linux=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra -Wimplicit -fpic
LDFLAGS_linux=-O -shared -fpic -o
LD_linux=gcc
SOCKET_linux=usocket.o
Expand All @@ -187,9 +186,7 @@ SO_freebsd=so
O_freebsd=o
CC_freebsd=gcc
DEF_freebsd=-DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN
CFLAGS_freebsd=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra \
-Wimplicit -O2 -ggdb3 -fpic
LDFLAGS_freebsd=-O -shared -fpic -o
CFLAGS_freebsd=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra -Wimplicit -fpic
LD_freebsd=gcc
SOCKET_freebsd=usocket.o

Expand All @@ -200,8 +197,7 @@ SO_solaris=so
O_solaris=o
CC_solaris=gcc
DEF_solaris=-DLUASOCKET_$(DEBUG)
CFLAGS_solaris=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra \
-Wimplicit -O2 -ggdb3 -fpic
CFLAGS_solaris=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra -Wimplicit -fpic
LDFLAGS_solaris=-lnsl -lsocket -lresolv -O -shared -fpic -o
LD_solaris=gcc
SOCKET_solaris=usocket.o
Expand All @@ -214,7 +210,7 @@ O_mingw=o
CC_mingw=gcc
DEF_mingw= -DLUASOCKET_$(DEBUG) \
-DWINVER=0x0501
CFLAGS_mingw=$(LUAINC:%=-I%) $(DEF) -Wall -O2 -fno-common
CFLAGS_mingw=$(LUAINC:%=-I%) $(DEF) -Wall -fno-common
LDFLAGS_mingw= $(LUALIB) -shared -Wl,-s -lws2_32 -o
LD_mingw=gcc
SOCKET_mingw=wsocket.o
Expand Down Expand Up @@ -396,18 +392,18 @@ none:
all: $(SOCKET_SO) $(MIME_SO)

$(SOCKET_SO): $(SOCKET_OBJS)
$(LD) $(SOCKET_OBJS) $(LDFLAGS)$@
$(LD) $(SOCKET_OBJS) -Wl,-soname,socket/core.so $(LDFLAGS)$@

$(MIME_SO): $(MIME_OBJS)
$(LD) $(MIME_OBJS) $(LDFLAGS)$@
$(LD) $(MIME_OBJS) -Wl,-soname,mime/core.so $(LDFLAGS)$@

all-unix: all $(UNIX_SO) $(SERIAL_SO)

$(UNIX_SO): $(UNIX_OBJS)
$(LD) $(UNIX_OBJS) $(LDFLAGS)$@
$(LD) $(UNIX_OBJS) -Wl,-soname,socket/unix.so $(LDFLAGS)$@

$(SERIAL_SO): $(SERIAL_OBJS)
$(LD) $(SERIAL_OBJS) $(LDFLAGS)$@
$(LD) $(SERIAL_OBJS) -Wl,-soname,socket/serial.so $(LDFLAGS)$@

install:
$(INSTALL_DIR) $(INSTALL_TOP_LDIR)
Expand Down
51 changes: 26 additions & 25 deletions src/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
* creates a interface compatible with the io.h module.
\*=========================================================================*/
#include "io.h"
#include "common.h"

/*=========================================================================*\
* Platform specific compatibilization
Expand Down Expand Up @@ -42,31 +43,31 @@ typedef struct sockaddr SA;
#pragma GCC visibility push(hidden)
#endif

int socket_waitfd(p_socket ps, int sw, p_timeout tm);
int socket_open(void);
int socket_close(void);
void socket_destroy(p_socket ps);
int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm);
int socket_create(p_socket ps, int domain, int type, int protocol);
int socket_bind(p_socket ps, SA *addr, socklen_t addr_len);
int socket_listen(p_socket ps, int backlog);
void socket_shutdown(p_socket ps, int how);
int socket_connect(p_socket ps, SA *addr, socklen_t addr_len, p_timeout tm);
int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *addr_len, p_timeout tm);
int socket_send(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm);
int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, SA *addr, socklen_t addr_len, p_timeout tm);
int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, SA *addr, socklen_t *addr_len, p_timeout tm);
int socket_write(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm);
int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
void socket_setblocking(p_socket ps);
void socket_setnonblocking(p_socket ps);
int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp);
int socket_gethostbyname(const char *addr, struct hostent **hp);
const char *socket_hoststrerror(int err);
const char *socket_strerror(int err);
const char *socket_ioerror(p_socket ps, int err);
const char *socket_gaistrerror(int err);
LUASOCKET_API int socket_waitfd(p_socket ps, int sw, p_timeout tm);
LUASOCKET_API int socket_open(void);
LUASOCKET_API int socket_close(void);
LUASOCKET_API void socket_destroy(p_socket ps);
LUASOCKET_API int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm);
LUASOCKET_API int socket_create(p_socket ps, int domain, int type, int protocol);
LUASOCKET_API int socket_bind(p_socket ps, SA *addr, socklen_t addr_len);
LUASOCKET_API int socket_listen(p_socket ps, int backlog);
LUASOCKET_API void socket_shutdown(p_socket ps, int how);
LUASOCKET_API int socket_connect(p_socket ps, SA *addr, socklen_t addr_len, p_timeout tm);
LUASOCKET_API int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *addr_len, p_timeout tm);
LUASOCKET_API int socket_send(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm);
LUASOCKET_API int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, SA *addr, socklen_t addr_len, p_timeout tm);
LUASOCKET_API int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
LUASOCKET_API int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, SA *addr, socklen_t *addr_len, p_timeout tm);
LUASOCKET_API int socket_write(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm);
LUASOCKET_API int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
LUASOCKET_API void socket_setblocking(p_socket ps);
LUASOCKET_API void socket_setnonblocking(p_socket ps);
LUASOCKET_API int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp);
LUASOCKET_API int socket_gethostbyname(const char *addr, struct hostent **hp);
LUASOCKET_API const char *socket_hoststrerror(int err);
LUASOCKET_API const char *socket_strerror(int err);
LUASOCKET_API const char *socket_ioerror(p_socket ps, int err);
LUASOCKET_API const char *socket_gaistrerror(int err);

#ifndef _WIN32
#pragma GCC visibility pop
Expand Down
19 changes: 10 additions & 9 deletions src/timeout.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
* LuaSocket toolkit
\*=========================================================================*/
#include "luasocket.h"
#include "common.h"

/* timeout control structure */
typedef struct t_timeout_ {
Expand All @@ -18,18 +19,18 @@ typedef t_timeout *p_timeout;
#pragma GCC visibility push(hidden)
#endif

void timeout_init(p_timeout tm, double block, double total);
double timeout_get(p_timeout tm);
double timeout_getstart(p_timeout tm);
double timeout_getretry(p_timeout tm);
p_timeout timeout_markstart(p_timeout tm);
LUASOCKET_API void timeout_init(p_timeout tm, double block, double total);
LUASOCKET_API double timeout_get(p_timeout tm);
LUASOCKET_API double timeout_getstart(p_timeout tm);
LUASOCKET_API double timeout_getretry(p_timeout tm);
LUASOCKET_API p_timeout timeout_markstart(p_timeout tm);

double timeout_gettime(void);
LUASOCKET_API double timeout_gettime(void);

int timeout_open(lua_State *L);
LUASOCKET_API int timeout_open(lua_State *L);

int timeout_meth_settimeout(lua_State *L, p_timeout tm);
int timeout_meth_gettimeout(lua_State *L, p_timeout tm);
LUASOCKET_API int timeout_meth_settimeout(lua_State *L, p_timeout tm);
LUASOCKET_API int timeout_meth_gettimeout(lua_State *L, p_timeout tm);

#ifndef _WIN32
#pragma GCC visibility pop
Expand Down
6 changes: 0 additions & 6 deletions src/usocket.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,6 @@
#ifndef SOCKET_SELECT
#include <sys/poll.h>

#define WAITFD_R POLLIN
#define WAITFD_W POLLOUT
#define WAITFD_C (POLLIN|POLLOUT)
int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
int ret;
struct pollfd pfd;
Expand All @@ -41,9 +38,6 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
}
#else

#define WAITFD_R 1
#define WAITFD_W 2
#define WAITFD_C (WAITFD_R|WAITFD_W)

int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
int ret;
Expand Down
16 changes: 16 additions & 0 deletions src/usocket.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,20 @@ typedef struct sockaddr_storage t_sockaddr_storage;

#define SOCKET_INVALID (-1)

#ifndef SOCKET_SELECT
#include <sys/poll.h>

#define WAITFD_R POLLIN
#define WAITFD_W POLLOUT
#define WAITFD_C (POLLIN|POLLOUT)

#else

#define WAITFD_R 1
#define WAITFD_W 2
#define WAITFD_C (WAITFD_R|WAITFD_W)

#endif


#endif /* USOCKET_H */
4 changes: 0 additions & 4 deletions src/wsocket.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,6 @@ int socket_close(void) {
/*-------------------------------------------------------------------------*\
* Wait for readable/writable/connected socket with timeout
\*-------------------------------------------------------------------------*/
#define WAITFD_R 1
#define WAITFD_W 2
#define WAITFD_E 4
#define WAITFD_C (WAITFD_E|WAITFD_W)

int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
int ret;
Expand Down
5 changes: 5 additions & 0 deletions src/wsocket.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,9 @@ typedef t_socket *p_socket;
#define AI_NUMERICSERV (0)
#endif

#define WAITFD_R 1
#define WAITFD_W 2
#define WAITFD_E 4
#define WAITFD_C (WAITFD_E|WAITFD_W)

#endif /* WSOCKET_H */
Loading