Lines Matching defs:str

40 static int	copyvec(evStream *str, const struct iovec *iov, int iocnt);
41 static void consume(evStream *str, size_t bytes);
42 static void done(evContext opaqueCtx, evStream *str);
126 evStream *str = id.opaque;
130 str->timer = timer;
131 str->flags |= EV_STR_TIMEROK;
137 evStream *str = id.opaque;
141 str->flags &= ~EV_STR_TIMEROK;
201 copyvec(evStream *str, const struct iovec *iov, int iocnt) {
204 str->iovOrig = (struct iovec *)memget(sizeof(struct iovec) * iocnt);
205 if (str->iovOrig == NULL) {
209 str->ioTotal = 0;
211 str->iovOrig[i] = iov[i];
212 str->ioTotal += iov[i].iov_len;
214 str->iovOrigCount = iocnt;
215 str->iovCur = str->iovOrig;
216 str->iovCurCount = str->iovOrigCount;
217 str->ioDone = 0;
223 consume(evStream *str, size_t bytes) {
225 if (bytes < (size_t)str->iovCur->iov_len) {
226 str->iovCur->iov_len -= bytes;
227 str->iovCur->iov_base = (void *)
228 ((u_char *)str->iovCur->iov_base + bytes);
229 str->ioDone += bytes;
232 bytes -= str->iovCur->iov_len;
233 str->ioDone += str->iovCur->iov_len;
234 str->iovCur++;
235 str->iovCurCount--;
242 done(evContext opaqueCtx, evStream *str) {
246 str->prevDone = ctx->strLast;
247 ctx->strLast->nextDone = str;
248 ctx->strLast = str;
251 ctx->strDone = ctx->strLast = str;
253 evDeselectFD(opaqueCtx, str->file);
254 str->file.opaque = NULL;
261 evStream *str = uap;
266 bytes = writev(fd, str->iovCur, str->iovCurCount);
268 if ((str->flags & EV_STR_TIMEROK) != 0)
269 evTouchIdleTimer(opaqueCtx, str->timer);
270 consume(str, bytes);
273 str->ioDone = -1;
274 str->ioErrno = errno;
277 if (str->ioDone == -1 || str->ioDone == str->ioTotal)
278 done(opaqueCtx, str);
284 evStream *str = uap;
289 bytes = readv(fd, str->iovCur, str->iovCurCount);
291 if ((str->flags & EV_STR_TIMEROK) != 0)
292 evTouchIdleTimer(opaqueCtx, str->timer);
293 consume(str, bytes);
296 str->ioDone = 0;
299 str->ioDone = -1;
300 str->ioErrno = errno;
304 if (str->ioDone <= 0 || str->ioDone == str->ioTotal)
305 done(opaqueCtx, str);