Skip to content

Commit cc7e811

Browse files
committed
Posix updated to recent modularisation...
...of the NTF callback module.
1 parent 31df82c commit cc7e811

File tree

8 files changed

+87
-386
lines changed

8 files changed

+87
-386
lines changed

lib/sockets/pbpal_ntf_callback_poller_poll.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
#include "pubnub_assert.h"
99
#include "pubnub_log.h"
1010

11+
#include <string.h>
12+
1113

1214
#if defined(_WIN32)
1315
/* Yes, we do know that it's not really that simple, there are subtle,
@@ -17,6 +19,14 @@
1719
#define poll(fdarray, nfds, timeout) WSAPoll(fdarray, nfds, timeout)
1820
#endif
1921

22+
#if !defined(INVALID_SOCKET)
23+
#define INVALID_SOCKET -1
24+
#endif
25+
26+
#if !defined(SOCKET_ERROR)
27+
#define SOCKET_ERROR -1
28+
#endif
29+
2030

2131
struct pbpal_poll_data* pbpal_ntf_callback_poller_init(void)
2232
{

openssl/posix.mk

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ CFLAGS =-g -D PUBNUB_LOG_LEVEL=PUBNUB_LOG_LEVEL_ERROR -Wall -D PUBNUB_THREADSAF
2626
# -g enables debugging, remove to get a smaller executable
2727
# -fsanitize=address Use AddressSanitizer
2828

29-
INCLUDES=-I ../core -I . -I ../posix/fntest -I ../core/fntest -I ../lib/base64
29+
INCLUDES=-I ../core -I . -I ../posix/fntest -I ../core/fntest -I ../lib/base64 -I ../lib/sockets
3030

3131
all: pubnub_sync_sample cancel_subscribe_sync_sample pubnub_sync_subloop_sample pubnub_callback_sample subscribe_publish_callback_sample pubnub_callback_subloop_sample pubnub_fntest pubnub_console_sync pubnub_console_callback pubnub_crypto_sync_sample
3232

@@ -35,9 +35,12 @@ pubnub_sync.a : $(SOURCEFILES) ../core/pubnub_ntf_sync.c ../core/pubnub_sync_sub
3535
$(CC) -c $(CFLAGS) $(INCLUDES) $(SOURCEFILES) ../core/pubnub_ntf_sync.c ../core/pubnub_sync_subscribe_loop.c
3636
ar rcs pubnub_sync.a $(OBJFILES) pubnub_ntf_sync.o pubnub_sync_subscribe_loop.o
3737

38-
pubnub_callback.a : $(SOURCEFILES) ../core/pubnub_timer_list.c pubnub_ntf_callback_posix.c pubnub_get_native_socket.c ../core/pubnub_callback_subscribe_loop.c
39-
$(CC) -c $(CFLAGS) $(INCLUDES) -D PUBNUB_CALLBACK_API $(SOURCEFILES) ../core/pubnub_timer_list.c pubnub_ntf_callback_posix.c pubnub_get_native_socket.c ../core/pubnub_callback_subscribe_loop.c
40-
ar rcs pubnub_callback.a $(OBJFILES) pubnub_timer_list.o pubnub_ntf_callback_posix.o pubnub_get_native_socket.o pubnub_callback_subscribe_loop.o
38+
CALLBACK_INTF_SOURCEFILES=pubnub_ntf_callback_posix.c pubnub_get_native_socket.c ../core/pubnub_timer_list.c ../lib/sockets/pbpal_ntf_callback_poller_poll.c ../core/pbpal_ntf_callback_queue.c ../core/pbpal_ntf_callback_admin.c ../core/pbpal_ntf_callback_handle_timer_list.c ../core/pubnub_callback_subscribe_loop.c
39+
CALLBACK_INTF_OBJFILES=pubnub_ntf_callback_posix.o pubnub_get_native_socket.o pubnub_timer_list.o pbpal_ntf_callback_poller_poll.o pbpal_ntf_callback_queue.o pbpal_ntf_callback_admin.o pbpal_ntf_callback_handle_timer_list.o pubnub_callback_subscribe_loop.o
40+
41+
pubnub_callback.a : $(SOURCEFILES) $(CALLBACK_INTF_SOURCEFILES)
42+
$(CC) -c $(CFLAGS) $(INCLUDES) -D PUBNUB_CALLBACK_API $(SOURCEFILES) $(CALLBACK_INTF_SOURCEFILES)
43+
ar rcs pubnub_callback.a $(OBJFILES) $(CALLBACK_INTF_OBJFILES)
4144

4245

4346
pubnub_sync_sample: ../core/samples/pubnub_sync_sample.c pubnub_sync.a

openssl/pubnub_ntf_callback_windows.c

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333

3434
struct SocketWatcherData {
35-
_Guarded_by_(mutw) struct pbpal_poll_data poll;
35+
_Guarded_by_(mutw) struct pbpal_poll_data* poll;
3636
CRITICAL_SECTION mutw;
3737
HANDLE thread_handle;
3838
DWORD thread_id;
@@ -60,13 +60,13 @@ static int elapsed_ms(FILETIME prev_timspec, FILETIME timspec)
6060

6161
int pbntf_watch_in_events(pubnub_t* pbp)
6262
{
63-
return pbpal_ntf_watch_in_events(&m_watcher.poll, pbp);
63+
return pbpal_ntf_watch_in_events(m_watcher.poll, pbp);
6464
}
6565

6666

6767
int pbntf_watch_out_events(pubnub_t* pbp)
6868
{
69-
return pbpal_ntf_watch_out_events(&m_watcher.poll, pbp);
69+
return pbpal_ntf_watch_out_events(m_watcher.poll, pbp);
7070
}
7171

7272

@@ -84,25 +84,9 @@ void socket_watcher_thread(void* arg)
8484

8585
Sleep(1);
8686

87+
pbpal_ntf_poll_away(m_watcher.poll, ms);
88+
8789
EnterCriticalSection(&m_watcher.mutw);
88-
if (m_watcher.poll.size > 0) {
89-
int rslt = WSAPoll(m_watcher.poll.apoll, m_watcher.poll.size, ms);
90-
if (SOCKET_ERROR == rslt) {
91-
/* error? what to do about it? */
92-
PUBNUB_LOG_WARNING("poll size = %ud, error = %d\n",
93-
(unsigned)m_watcher.poll.size,
94-
WSAGetLastError());
95-
}
96-
else if (rslt > 0) {
97-
size_t i;
98-
size_t apoll_size = m_watcher.poll.size;
99-
for (i = 0; i < apoll_size; ++i) {
100-
if (m_watcher.poll.apoll[i].revents & (POLLIN | POLLOUT)) {
101-
pbntf_requeue_for_processing(m_watcher.poll.apb[i]);
102-
}
103-
}
104-
}
105-
}
10690
if (PUBNUB_TIMERS_API) {
10791
FILETIME current_time;
10892
int elapsed;
@@ -123,6 +107,10 @@ int pbntf_init(void)
123107
{
124108
InitializeCriticalSection(&m_watcher.mutw);
125109

110+
m_watcher.poll = pbpal_ntf_callback_poller_init();
111+
if (NULL == m_watcher.poll) {
112+
return -1;
113+
}
126114
pbpal_ntf_callback_queue_init(&m_watcher.queue);
127115

128116
m_watcher.thread_handle = (HANDLE)_beginthread(
@@ -132,6 +120,7 @@ int pbntf_init(void)
132120
errno);
133121
DeleteCriticalSection(&m_watcher.mutw);
134122
pbpal_ntf_callback_queue_deinit(&m_watcher.queue);
123+
pbpal_ntf_callback_poller_deinit(&m_watcher.poll);
135124
return -1;
136125
}
137126
m_watcher.thread_id = GetThreadId(m_watcher.thread_handle);
@@ -158,7 +147,7 @@ int pbntf_got_socket(pubnub_t* pb, pb_socket_t sockt)
158147

159148
PUBNUB_UNUSED(sockt);
160149

161-
pbpal_ntf_callback_save_socket(&m_watcher.poll, pb);
150+
pbpal_ntf_callback_save_socket(m_watcher.poll, pb);
162151
if (PUBNUB_TIMERS_API) {
163152
m_watcher.timer_head = pubnub_timer_list_add(m_watcher.timer_head, pb);
164153
}
@@ -177,7 +166,7 @@ void pbntf_lost_socket(pubnub_t* pb, pb_socket_t sockt)
177166

178167
PUBNUB_UNUSED(sockt);
179168

180-
pbpal_ntf_callback_remove_socket(&m_watcher.poll, pb);
169+
pbpal_ntf_callback_remove_socket(m_watcher.poll, pb);
181170
pbpal_remove_timer_safe(pb, &m_watcher.timer_head);
182171
pbpal_ntf_callback_remove_from_queue(&m_watcher.queue, pb);
183172

@@ -191,7 +180,7 @@ void pbntf_update_socket(pubnub_t* pb, pb_socket_t socket)
191180

192181
EnterCriticalSection(&m_watcher.mutw);
193182

194-
pbpal_ntf_callback_update_socket(&m_watcher.poll, pb);
183+
pbpal_ntf_callback_update_socket(m_watcher.poll, pb);
195184

196185
LeaveCriticalSection(&m_watcher.mutw);
197186
}

posix/posix.mk

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,20 @@ CFLAGS =-g -Wall -D PUBNUB_THREADSAFE -D PUBNUB_LOG_LEVEL=PUBNUB_LOG_LEVEL_NONE
2626
# -g enables debugging, remove to get a smaller executable
2727
# -fsanitize-address Use AddressSanitizer
2828

29-
INCLUDES=-I ../core -I . -I fntest -I ../core/fntest -I ../lib/base64 -I ../lib/md5
29+
INCLUDES=-I ../core -I . -I fntest -I ../core/fntest -I ../lib/base64 -I ../lib/md5 -I ../lib/sockets
3030

3131
all: pubnub_sync_sample cancel_subscribe_sync_sample pubnub_sync_subloop_sample pubnub_sync_publish_retry pubnub_callback_sample pubnub_callback_subloop_sample subscribe_publish_callback_sample pubnub_fntest pubnub_console_sync pubnub_console_callback
3232

3333
pubnub_sync.a : $(SOURCEFILES) ../core/pubnub_ntf_sync.c ../core/pubnub_sync_subscribe_loop.c
3434
$(CC) -c $(CFLAGS) $(INCLUDES) $(SOURCEFILES) ../core/pubnub_ntf_sync.c ../core/pubnub_sync_subscribe_loop.c
3535
ar rcs pubnub_sync.a $(OBJFILES) pubnub_ntf_sync.o pubnub_sync_subscribe_loop.o
3636

37-
pubnub_callback.a : $(SOURCEFILES) ../core/pubnub_timer_list.c pubnub_ntf_callback_posix.c pubnub_get_native_socket.c ../lib/sockets/pbpal_adns_sockets.c ../core/pubnub_callback_subscribe_loop.c
38-
$(CC) -c $(CFLAGS) -D PUBNUB_CALLBACK_API $(INCLUDES) $(SOURCEFILES) ../core/pubnub_timer_list.c pubnub_ntf_callback_posix.c pubnub_get_native_socket.c ../lib/sockets/pbpal_adns_sockets.c ../core/pubnub_callback_subscribe_loop.c
39-
ar rcs pubnub_callback.a $(OBJFILES) pubnub_timer_list.o pubnub_ntf_callback_posix.o pubnub_get_native_socket.o pbpal_adns_sockets.o pubnub_callback_subscribe_loop.o
37+
CALLBACK_INTF_SOURCEFILES=pubnub_ntf_callback_posix.c pubnub_get_native_socket.c ../core/pubnub_timer_list.c ../lib/sockets/pbpal_ntf_callback_poller_poll.c ../core/pbpal_ntf_callback_queue.c ../core/pbpal_ntf_callback_admin.c ../core/pbpal_ntf_callback_handle_timer_list.c ../core/pubnub_callback_subscribe_loop.c
38+
CALLBACK_INTF_OBJFILES=pubnub_ntf_callback_posix.o pubnub_get_native_socket.o pubnub_timer_list.o pbpal_ntf_callback_poller_poll.o pbpal_ntf_callback_queue.o pbpal_ntf_callback_admin.o pbpal_ntf_callback_handle_timer_list.o pubnub_callback_subscribe_loop.o
39+
40+
pubnub_callback.a : $(SOURCEFILES) $(CALLBACK_INTF_SOURCEFILES)
41+
$(CC) -c $(CFLAGS) -D PUBNUB_CALLBACK_API $(INCLUDES) $(SOURCEFILES) $(CALLBACK_INTF_SOURCEFILES)
42+
ar rcs pubnub_callback.a $(OBJFILES) $(CALLBACK_INTF_OBJFILES)
4043

4144
pubnub_sync_sample: ../core/samples/pubnub_sync_sample.c pubnub_sync.a
4245
$(CC) -o $@ $(CFLAGS) $(INCLUDES) ../core/samples/pubnub_sync_sample.c pubnub_sync.a $(LDLIBS)

posix/pubnub_get_native_socket.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
/* -*- c-file-style:"stroustrup"; indent-tabs-mode: nil -*- */
22
#include "pubnub_internal.h"
33

4+
#include "pubnub_get_native_socket.h"
45

5-
int pubnub_get_native_socket(pubnub_t *pb)
6+
7+
pbpal_native_socket_t pubnub_get_native_socket(pubnub_t *pb)
68
{
79
return pb->pal.socket;
810
}

posix/pubnub_get_native_socket.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
#include "pubnub_internal.h"
66

7+
typedef int pbpal_native_socket_t;
78

89
/** Returns the native socket under POSIX of the given Pubnub context.
9-
On POSIX, native (BSD) socket is an integer handle.
1010
*/
11-
int pubnub_get_native_socket(pubnub_t *pb);
11+
pbpal_native_socket_t pubnub_get_native_socket(pubnub_t *pb);
1212

1313

1414
#endif /* !defined INC_PUBNUB_GET_NATIVE_SOCKET*/

posix/pubnub_internal.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <unistd.h>
77
#include <sys/socket.h>
88
#include <netdb.h>
9+
#include <arpa/inet.h>
910
#include <errno.h>
1011

1112

0 commit comments

Comments
 (0)