PostgreSQL Source Code: src/backend/port/win32/socket.c File Reference (original) (raw)

Go to the source code of this file.
| Functions | |
|---|---|
| static void | TranslateSocketError (void) |
| static int | pgwin32_poll_signals (void) |
| static int | isDataGram (SOCKET s) |
| int | pgwin32_waitforsinglesocket (SOCKET s, int what, int timeout) |
| SOCKET | pgwin32_socket (int af, int type, int protocol) |
| int | pgwin32_bind (SOCKET s, struct sockaddr *addr, int addrlen) |
| int | pgwin32_listen (SOCKET s, int backlog) |
| SOCKET | pgwin32_accept (SOCKET s, struct sockaddr *addr, int *addrlen) |
| int | pgwin32_connect (SOCKET s, const struct sockaddr *addr, int addrlen) |
| int | pgwin32_recv (SOCKET s, char *buf, int len, int f) |
| int | pgwin32_send (SOCKET s, const void *buf, int len, int flags) |
| int | pgwin32_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout) |
◆ isDataGram()
◆ pgwin32_accept()
◆ pgwin32_bind()
Definition at line 315 of file socket.c.
316{
317 int res;
318
319 res = bind(s, addr, addrlen);
320 if (res < 0)
322 return res;
323}
#define bind(s, addr, addrlen)
References bind, and TranslateSocketError().
◆ pgwin32_connect()
◆ pgwin32_listen()
◆ pgwin32_poll_signals()
◆ pgwin32_recv()
Definition at line 382 of file socket.c.
383{
385 int r;
388 int n;
389
391 return -1;
392
395
398 return b;
399
401 {
403 return -1;
404 }
405
407 {
408
409
410
411
413 return -1;
414 }
415
416
417
418 for (n = 0; n < 5; n++)
419 {
422 return -1;
423
426 return b;
428 {
430 return -1;
431 }
432
433
434
435
436
437
438
439
441 }
443 (errmsg_internal("could not read from ready socket (after retries)")));
445 return -1;
446}
int int errmsg_internal(const char *fmt,...) pg_attribute_printf(1
#define ereport(elevel,...)
static char buf[DEFAULT_XLOG_SEG_SIZE]
void pg_usleep(long microsec)
References b, buf, ereport, errmsg_internal(), EWOULDBLOCK, fb(), len, NOTICE, pg_usleep(), pgwin32_noblock, pgwin32_poll_signals(), pgwin32_waitforsinglesocket(), and TranslateSocketError().
◆ pgwin32_select()
Definition at line 517 of file socket.c.
518{
520
521
524 int i;
525 int r;
530
532
534 return -1;
535
538
539
540
541
542
543
544
545
546
547
548
550 {
552 {
553 char c;
556
558 buf.len = 0;
559
563 }
564
565
567 {
572 }
573 }
574
575
576
577
579 {
580
582 }
583
585 {
586 for (i = 0; i < readfds->fd_count; i++)
587 {
591 }
592 }
594 {
596 {
599 {
600
604 }
605 }
606 }
607
609 {
610 int flags = 0;
611
614
617
619 {
621
622 while (--i >= 0)
626 return -1;
627 }
628 }
629
633 {
634
635
636
637
639
641 {
644 elog(ERROR, "failed to enumerate network events: error code %d",
646
648 {
652 {
654
656 }
657 }
658
660 {
663 {
665
667 }
668 }
669 }
670 }
671
672
674 {
677 }
678
680 {
685 return 0;
686 }
687
688
690 {
697 return -1;
698 }
699
700
706}
#define Assert(condition)
HANDLE pgwin32_signal_event
References Assert, buf, EINTR, elog, ERROR, fb(), i, pgwin32_dispatch_queued_signals(), pgwin32_poll_signals(), pgwin32_signal_event, and TranslateSocketError().
◆ pgwin32_send()
◆ pgwin32_socket()
◆ pgwin32_waitforsinglesocket()
Definition at line 181 of file socket.c.
182{
185 static int isUDP = 0;
187 int r;
188
189
191 {
193
197 }
201
202
203
204
205
206
210
211
212
213
214
215
217 {
219 return 0;
220 }
221
224
225
226
227
228
229
230
231
233 {
234 for (;;)
235 {
237
239 {
240 char c;
243
245 buf.len = 0;
246
248 if (r == 0)
249 {
251 return 1;
252 }
254 {
257 return 0;
258 }
259 }
260 else
261 break;
262 }
263 }
264 else
266
268
270 {
273 return 0;
274 }
276 return 1;
278 {
280 return 0;
281 }
283 (errmsg_internal("unrecognized return value from WaitForMultipleObjects: %d (error code %lu)", r, GetLastError())));
284 return 0;
285}
static int isDataGram(SOCKET s)
References buf, EINTR, ereport, errmsg_internal(), ERROR, EWOULDBLOCK, fb(), isDataGram(), pgwin32_dispatch_queued_signals(), pgwin32_signal_event, and TranslateSocketError().
Referenced by pgwin32_connect(), pgwin32_recv(), and pgwin32_send().
◆ TranslateSocketError()
Definition at line 56 of file socket.c.
57{
59 {
66 break;
69 break;
72 break;
75 break;
78 break;
81 break;
84 break;
87 break;
92 break;
95 break;
98 break;
101 break;
104 break;
107 break;
110 break;
113 break;
116 break;
119 break;
122 break;
125 break;
129 break;
132 break;
135 break;
138 break;
143 break;
146 break;
147 default:
149 (errmsg_internal("unrecognized win32 socket error code: %d",
152 break;
153 }
154}
References EADDRINUSE, EADDRNOTAVAIL, EAFNOSUPPORT, ECONNABORTED, ECONNREFUSED, ECONNRESET, EHOSTDOWN, EHOSTUNREACH, EINPROGRESS, EINTR, EISCONN, EMSGSIZE, ENETDOWN, ENETRESET, ENETUNREACH, ENOBUFS, ENOTCONN, ENOTSOCK, EOPNOTSUPP, EPROTONOSUPPORT, ereport, errmsg_internal(), ETIMEDOUT, EWOULDBLOCK, fb(), and NOTICE.
Referenced by pgwin32_accept(), pgwin32_bind(), pgwin32_connect(), pgwin32_listen(), pgwin32_recv(), pgwin32_select(), pgwin32_send(), pgwin32_socket(), and pgwin32_waitforsinglesocket().