Mercurial > cpython-lru_cache-weakref
annotate Modules/_multiprocessing/pipe_connection.c @ 79675:c0a2294de787 2.7
Issue #16199: Backport 2to3 typo fix from 3.2.
| author | Chris Jerdonek <chris.jerdonek@gmail.com> |
|---|---|
| date | Thu, 11 Oct 2012 16:15:46 -0700 |
| parents | b36cb4602e21 |
| children |
| rev | line source |
|---|---|
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
1 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
2 * A type which wraps a pipe handle in message oriented mode |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
3 * |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
4 * pipe_connection.c |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
5 * |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
6 * Copyright (c) 2006-2008, R Oudkerk --- see COPYING.txt |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
7 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
8 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
9 #include "multiprocessing.h" |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
10 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
11 #define CLOSE(h) CloseHandle(h) |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
12 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
13 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
14 * Send string to the pipe; assumes in message oriented mode |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
15 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
16 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
17 static Py_ssize_t |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
18 conn_send_string(ConnectionObject *conn, char *string, size_t length) |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
19 { |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
20 DWORD amount_written; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
21 BOOL ret; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
22 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
23 Py_BEGIN_ALLOW_THREADS |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
24 ret = WriteFile(conn->handle, string, length, &amount_written, NULL); |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
25 Py_END_ALLOW_THREADS |
|
52902
d3887dfe661f
Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51569
diff
changeset
|
26 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61262
diff
changeset
|
27 if (ret == 0 && GetLastError() == ERROR_NO_SYSTEM_RESOURCES) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61262
diff
changeset
|
28 PyErr_Format(PyExc_ValueError, "Cannnot send %" PY_FORMAT_SIZE_T "d bytes over connection", length); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61262
diff
changeset
|
29 return MP_STANDARD_ERROR; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
61262
diff
changeset
|
30 } |
|
52902
d3887dfe661f
Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51569
diff
changeset
|
31 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
32 return ret ? MP_SUCCESS : MP_STANDARD_ERROR; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
33 } |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
34 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
35 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
36 * Attempts to read into buffer, or if buffer too small into *newbuffer. |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
37 * |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
38 * Returns number of bytes read. Assumes in message oriented mode. |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
39 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
40 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
41 static Py_ssize_t |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
42 conn_recv_string(ConnectionObject *conn, char *buffer, |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
43 size_t buflength, char **newbuffer, size_t maxlength) |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
44 { |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
45 DWORD left, length, full_length, err; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
46 BOOL ret; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
47 *newbuffer = NULL; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
48 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
49 Py_BEGIN_ALLOW_THREADS |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
50 ret = ReadFile(conn->handle, buffer, MIN(buflength, maxlength), |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
51 &length, NULL); |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
52 Py_END_ALLOW_THREADS |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
53 if (ret) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
54 return length; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
55 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
56 err = GetLastError(); |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
57 if (err != ERROR_MORE_DATA) { |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
58 if (err == ERROR_BROKEN_PIPE) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
59 return MP_END_OF_FILE; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
60 return MP_STANDARD_ERROR; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
61 } |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
62 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
63 if (!PeekNamedPipe(conn->handle, NULL, 0, NULL, NULL, &left)) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
64 return MP_STANDARD_ERROR; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
65 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
66 full_length = length + left; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
67 if (full_length > maxlength) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
68 return MP_BAD_MESSAGE_LENGTH; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
69 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
70 *newbuffer = PyMem_Malloc(full_length); |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
71 if (*newbuffer == NULL) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
72 return MP_MEMORY_ERROR; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
73 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
74 memcpy(*newbuffer, buffer, length); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
75 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
76 Py_BEGIN_ALLOW_THREADS |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
77 ret = ReadFile(conn->handle, *newbuffer+length, left, &length, NULL); |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
78 Py_END_ALLOW_THREADS |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
79 if (ret) { |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
80 assert(length == left); |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
81 return full_length; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
82 } else { |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
83 PyMem_Free(*newbuffer); |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
84 return MP_STANDARD_ERROR; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
85 } |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
86 } |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
87 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
88 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
89 * Check whether any data is available for reading |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
90 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
91 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
92 static int |
|
52521
4eeb14a9c5d2
Merged revisions 68787 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents:
48615
diff
changeset
|
93 conn_poll(ConnectionObject *conn, double timeout, PyThreadState *_save) |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
94 { |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
95 DWORD bytes, deadline, delay; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
96 int difference, res; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
97 BOOL block = FALSE; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
98 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
99 if (!PeekNamedPipe(conn->handle, NULL, 0, NULL, &bytes, NULL)) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
100 return MP_STANDARD_ERROR; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
101 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
102 if (timeout == 0.0) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
103 return bytes > 0; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
104 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
105 if (timeout < 0.0) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
106 block = TRUE; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
107 else |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
108 /* XXX does not check for overflow */ |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
109 deadline = GetTickCount() + (DWORD)(1000 * timeout + 0.5); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
110 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
111 Sleep(0); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
112 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
113 for (delay = 1 ; ; delay += 1) { |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
114 if (!PeekNamedPipe(conn->handle, NULL, 0, NULL, &bytes, NULL)) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
115 return MP_STANDARD_ERROR; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
116 else if (bytes > 0) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
117 return TRUE; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
118 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
119 if (!block) { |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
120 difference = deadline - GetTickCount(); |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
121 if (difference < 0) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
122 return FALSE; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
123 if ((int)delay > difference) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
124 delay = difference; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
125 } |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
126 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
127 if (delay > 20) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
128 delay = 20; |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
129 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
130 Sleep(delay); |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
131 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
132 /* check for signals */ |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
133 Py_BLOCK_THREADS |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
134 res = PyErr_CheckSignals(); |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
135 Py_UNBLOCK_THREADS |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
136 |
|
61465
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
137 if (res) |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
138 return MP_EXCEPTION_HAS_BEEN_SET; |
|
e38335d4df91
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52521
diff
changeset
|
139 } |
|
47698
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
140 } |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
141 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
142 /* |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
143 * "connection.h" defines the PipeConnection type using the definitions above |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
144 */ |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
145 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
146 #define CONNECTION_NAME "PipeConnection" |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
147 #define CONNECTION_TYPE PipeConnectionType |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
148 |
|
6d1dc761ab4e
fix multiprocessing line endings in py3k
Benjamin Peterson <benjamin@python.org>
parents:
47595
diff
changeset
|
149 #include "connection.h" |
