Lines Matching refs:self

121 overlapped_traverse(OverlappedObject *self, visitproc visit, void *arg)
123 Py_VISIT(self->read_buffer);
124 Py_VISIT(self->write_buffer.obj);
125 Py_VISIT(Py_TYPE(self));
130 overlapped_dealloc(OverlappedObject *self)
135 PyObject_GC_UnTrack(self);
136 if (self->pending) {
138 Py_CancelIoEx(self->handle, &self->overlapped) &&
139 GetOverlappedResult(self->handle, &self->overlapped, &bytes, TRUE))
156 about memory leaks. Leaking self prevents a potential
160 CloseHandle(self->overlapped.hEvent);
166 CloseHandle(self->overlapped.hEvent);
168 if (self->write_buffer.obj)
169 PyBuffer_Release(&self->write_buffer);
170 Py_CLEAR(self->read_buffer);
171 PyTypeObject *tp = Py_TYPE(self);
172 tp->tp_free(self);
205 def render(self, function, data):
206 self.declare(data)
207 self.err_occurred_if("_return_value == INVALID_HANDLE_VALUE", data)
216 def render(self, function, data):
217 self.declare(data)
218 self.err_occurred_if("_return_value == PY_DWORD_MAX", data)
225 def render(self, function, data):
226 self.declare(data)
227 self.err_occurred_if("_return_value == NULL", data)
243 _winapi_Overlapped_GetOverlappedResult_impl(OverlappedObject *self, int wait)
251 res = GetOverlappedResult(self->handle, &self->overlapped, &transferred,
260 self->completed = 1;
261 self->pending = 0;
266 self->pending = 0;
269 if (self->completed && self->read_buffer != NULL) {
270 assert(PyBytes_CheckExact(self->read_buffer));
271 if (transferred != PyBytes_GET_SIZE(self->read_buffer) &&
272 _PyBytes_Resize(&self->read_buffer, transferred))
283 _winapi_Overlapped_getbuffer_impl(OverlappedObject *self)
287 if (!self->completed) {
293 res = self->read_buffer ? self->read_buffer : Py_None;
303 _winapi_Overlapped_cancel_impl(OverlappedObject *self)
308 if (self->pending) {
311 res = Py_CancelIoEx(self->handle, &self->overlapped);
313 res = CancelIo(self->handle);
320 self->pending = 0;
359 OverlappedObject *self = PyObject_GC_New(OverlappedObject, st->overlapped_type);
360 if (!self)
363 self->handle = handle;
364 self->read_buffer = NULL;
365 self->pending = 0;
366 self->completed = 0;
367 memset(&self->overlapped, 0, sizeof(OVERLAPPED));
368 memset(&self->write_buffer, 0, sizeof(Py_buffer));
370 self->overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
372 PyObject_GC_Track(self);
373 return self;