Lines Matching defs:rstrm
172 RECSTREAM *rstrm = mem_alloc(sizeof(RECSTREAM));
174 if (rstrm == NULL) {
182 rstrm->sendsize = sendsize = fix_buf_size(sendsize);
183 rstrm->out_base = mem_alloc(rstrm->sendsize);
184 if (rstrm->out_base == NULL) {
186 mem_free(rstrm, sizeof(RECSTREAM));
189 rstrm->recvsize = recvsize = fix_buf_size(recvsize);
190 rstrm->in_base = mem_alloc(recvsize);
191 if (rstrm->in_base == NULL) {
193 mem_free(rstrm->out_base, sendsize);
194 mem_free(rstrm, sizeof(RECSTREAM));
201 xdrs->x_private = rstrm;
202 rstrm->tcp_handle = tcp_handle;
203 rstrm->readit = readit;
204 rstrm->writeit = writeit;
205 rstrm->out_finger = rstrm->out_boundry = rstrm->out_base;
206 rstrm->frag_header = (u_int32_t *)(void *)rstrm->out_base;
207 rstrm->out_finger += sizeof(u_int32_t);
208 rstrm->out_boundry += sendsize;
209 rstrm->frag_sent = FALSE;
210 rstrm->in_size = recvsize;
211 rstrm->in_boundry = rstrm->in_base;
212 rstrm->in_finger = (rstrm->in_boundry += recvsize);
213 rstrm->fbtbc = 0;
214 rstrm->last_frag = TRUE;
215 rstrm->in_haveheader = FALSE;
216 rstrm->in_hdrlen = 0;
217 rstrm->in_hdrp = (char *)(void *)&rstrm->in_header;
218 rstrm->nonblock = FALSE;
219 rstrm->in_reclen = 0;
220 rstrm->in_received = 0;
232 RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private);
233 int32_t *buflp = (int32_t *)(void *)(rstrm->in_finger);
237 if ((rstrm->fbtbc >= sizeof(int32_t)) &&
238 (((long)rstrm->in_boundry - (long)buflp) >= sizeof(int32_t))) {
240 rstrm->fbtbc -= sizeof(int32_t);
241 rstrm->in_finger += sizeof(int32_t);
254 RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private);
255 int32_t *dest_lp = ((int32_t *)(void *)(rstrm->out_finger));
257 if ((rstrm->out_finger += sizeof(int32_t)) > rstrm->out_boundry) {
262 rstrm->out_finger -= sizeof(int32_t);
263 rstrm->frag_sent = TRUE;
264 if (! flush_out(rstrm, FALSE))
266 dest_lp = ((int32_t *)(void *)(rstrm->out_finger));
267 rstrm->out_finger += sizeof(int32_t);
276 RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private);
280 current = (int)rstrm->fbtbc;
282 if (rstrm->last_frag)
284 if (! set_input_fragment(rstrm))
289 if (! get_input_bytes(rstrm, addr, current))
292 rstrm->fbtbc -= current;
301 RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private);
305 current = (size_t)((u_long)rstrm->out_boundry -
306 (u_long)rstrm->out_finger);
308 memmove(rstrm->out_finger, addr, current);
309 rstrm->out_finger += current;
312 if (rstrm->out_finger == rstrm->out_boundry) {
313 rstrm->frag_sent = TRUE;
314 if (! flush_out(rstrm, FALSE))
331 RECSTREAM *rstrm = (RECSTREAM *)xdrs->x_private;
336 pos = rstrm->out_finger - rstrm->out_base;
340 pos = rstrm->in_finger - rstrm->in_base;
353 RECSTREAM *rstrm = (RECSTREAM *)xdrs->x_private;
360 newpos = rstrm->out_finger - delta;
361 if ((newpos > (char *)(void *)(rstrm->frag_header)) &&
362 (newpos < rstrm->out_boundry)) {
363 rstrm->out_finger = newpos;
369 newpos = rstrm->in_finger - delta;
370 if ((delta < (int)(rstrm->fbtbc)) &&
371 (newpos <= rstrm->in_boundry) &&
372 (newpos >= rstrm->in_base)) {
373 rstrm->in_finger = newpos;
374 rstrm->fbtbc -= delta;
388 RECSTREAM *rstrm = (RECSTREAM *)xdrs->x_private;
394 if ((rstrm->out_finger + len) <= rstrm->out_boundry) {
395 buf = (int32_t *)(void *)rstrm->out_finger;
396 rstrm->out_finger += len;
401 if ((len <= rstrm->fbtbc) &&
402 ((rstrm->in_finger + len) <= rstrm->in_boundry)) {
403 buf = (int32_t *)(void *)rstrm->in_finger;
404 rstrm->fbtbc -= len;
405 rstrm->in_finger += len;
418 RECSTREAM *rstrm = (RECSTREAM *)xdrs->x_private;
420 mem_free(rstrm->out_base, rstrm->sendsize);
421 mem_free(rstrm->in_base, rstrm->recvsize);
422 mem_free(rstrm, sizeof(RECSTREAM));
437 RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private);
440 if (rstrm->nonblock) {
442 rstrm->fbtbc = 0;
445 if (rstrm->in_finger == rstrm->in_boundry &&
447 rstrm->fbtbc = 0;
453 while (rstrm->fbtbc > 0 || (! rstrm->last_frag)) {
454 if (! skip_input_bytes(rstrm, rstrm->fbtbc))
456 rstrm->fbtbc = 0;
457 if ((! rstrm->last_frag) && (! set_input_fragment(rstrm)))
460 rstrm->last_frag = FALSE;
472 RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private);
474 while (rstrm->fbtbc > 0 || (! rstrm->last_frag)) {
475 if (! skip_input_bytes(rstrm, rstrm->fbtbc))
477 rstrm->fbtbc = 0;
478 if ((! rstrm->last_frag) && (! set_input_fragment(rstrm)))
481 if (rstrm->in_finger == rstrm->in_boundry)
495 RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private);
498 if (sendnow || rstrm->frag_sent ||
499 ((u_long)rstrm->out_finger + sizeof(u_int32_t) >=
500 (u_long)rstrm->out_boundry)) {
501 rstrm->frag_sent = FALSE;
502 return (flush_out(rstrm, TRUE));
504 len = (u_long)(rstrm->out_finger) - (u_long)(rstrm->frag_header) -
506 *(rstrm->frag_header) = htonl((u_int32_t)len | LAST_FRAG);
507 rstrm->frag_header = (u_int32_t *)(void *)rstrm->out_finger;
508 rstrm->out_finger += sizeof(u_int32_t);
519 RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private);
523 if (!rstrm->in_haveheader) {
524 n = rstrm->readit(rstrm->tcp_handle, rstrm->in_hdrp,
525 (int)sizeof (rstrm->in_header) - rstrm->in_hdrlen);
534 rstrm->in_hdrp += n;
535 rstrm->in_hdrlen += n;
536 if (rstrm->in_hdrlen < sizeof (rstrm->in_header)) {
540 rstrm->in_header = ntohl(rstrm->in_header);
541 fraglen = (int)(rstrm->in_header & ~LAST_FRAG);
542 if (fraglen == 0 || fraglen > rstrm->in_maxrec ||
543 (rstrm->in_reclen + fraglen) > rstrm->in_maxrec) {
547 rstrm->in_reclen += fraglen;
548 if (rstrm->in_reclen > rstrm->recvsize)
549 realloc_stream(rstrm, rstrm->in_reclen);
550 if (rstrm->in_header & LAST_FRAG) {
551 rstrm->in_header &= ~LAST_FRAG;
552 rstrm->last_frag = TRUE;
562 n = rstrm->readit(rstrm->tcp_handle,
563 rstrm->in_base + rstrm->in_received,
564 (rstrm->in_reclen - rstrm->in_received));
576 rstrm->in_received += n;
578 if (rstrm->in_received == rstrm->in_reclen) {
579 rstrm->in_haveheader = FALSE;
580 rstrm->in_hdrp = (char *)(void *)&rstrm->in_header;
581 rstrm->in_hdrlen = 0;
582 if (rstrm->last_frag) {
583 rstrm->fbtbc = rstrm->in_reclen;
584 rstrm->in_boundry = rstrm->in_base + rstrm->in_reclen;
585 rstrm->in_finger = rstrm->in_base;
586 rstrm->in_reclen = rstrm->in_received = 0;
599 RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private);
601 rstrm->nonblock = TRUE;
603 maxrec = rstrm->recvsize;
604 rstrm->in_maxrec = maxrec;
612 flush_out(RECSTREAM *rstrm, bool_t eor)
615 u_int32_t len = (u_int32_t)((u_long)(rstrm->out_finger) -
616 (u_long)(rstrm->frag_header) - sizeof(u_int32_t));
618 *(rstrm->frag_header) = htonl(len | eormask);
619 len = (u_int32_t)((u_long)(rstrm->out_finger) -
620 (u_long)(rstrm->out_base));
621 if ((*(rstrm->writeit))(rstrm->tcp_handle, rstrm->out_base, (int)len)
624 rstrm->frag_header = (u_int32_t *)(void *)rstrm->out_base;
625 rstrm->out_finger = (char *)rstrm->out_base + sizeof(u_int32_t);
630 fill_input_buf(RECSTREAM *rstrm)
636 if (rstrm->nonblock)
639 where = rstrm->in_base;
640 i = (u_int32_t)((u_long)rstrm->in_boundry % BYTES_PER_XDR_UNIT);
642 len = (u_int32_t)(rstrm->in_size - i);
643 if ((len = (*(rstrm->readit))(rstrm->tcp_handle, where, len)) == -1)
645 rstrm->in_finger = where;
647 rstrm->in_boundry = where;
652 get_input_bytes(RECSTREAM *rstrm, char *addr, int len)
656 if (rstrm->nonblock) {
657 if (len > (int)(rstrm->in_boundry - rstrm->in_finger))
659 memcpy(addr, rstrm->in_finger, (size_t)len);
660 rstrm->in_finger += len;
665 current = (size_t)((long)rstrm->in_boundry -
666 (long)rstrm->in_finger);
668 if (! fill_input_buf(rstrm))
673 memmove(addr, rstrm->in_finger, current);
674 rstrm->in_finger += current;
682 set_input_fragment(RECSTREAM *rstrm)
686 if (rstrm->nonblock)
688 if (! get_input_bytes(rstrm, (char *)(void *)&header, sizeof(header)))
691 rstrm->last_frag = ((header & LAST_FRAG) == 0) ? FALSE : TRUE;
702 rstrm->fbtbc = header & (~LAST_FRAG);
707 skip_input_bytes(RECSTREAM *rstrm, long cnt)
712 current = (size_t)((long)rstrm->in_boundry -
713 (long)rstrm->in_finger);
715 if (! fill_input_buf(rstrm))
720 rstrm->in_finger += current;
739 realloc_stream(RECSTREAM *rstrm, int size)
744 if (size > rstrm->recvsize) {
745 buf = realloc(rstrm->in_base, (size_t)size);
748 diff = buf - rstrm->in_base;
749 rstrm->in_finger += diff;
750 rstrm->in_base = buf;
751 rstrm->in_boundry = buf + size;
752 rstrm->recvsize = size;
753 rstrm->in_size = size;