void processnailgunstream()

in nailgun-client/c/ng.c [537:570]


void processnailgunstream() {

  /*for (;;) {*/
    unsigned long len;
    char chunkType;

    recvToBuffer(CHUNK_HEADER_LEN);

    len = ((buf[0] << 24) & 0xff000000)
      | ((buf[1] << 16) & 0x00ff0000)
      | ((buf[2] << 8) & 0x0000ff00)
      | ((buf[3]) & 0x000000ff);

    chunkType = buf[4];

    switch(chunkType) {
      case CHUNKTYPE_STDOUT: recvToFD(NG_STDOUT_FILENO, buf, len);
            break;
      case CHUNKTYPE_STDERR: recvToFD(NG_STDERR_FILENO, buf, len);
            break;
      case CHUNKTYPE_EXIT:   processExit(buf, len);
            break;
      case CHUNKTYPE_SENDINPUT:
#ifdef WIN32
            SetEvent(readyToSend);
#else
            readyToSend = 1;
#endif
            break;
      default:  fprintf(stderr, "Unexpected chunk type %d ('%c')\n", chunkType, chunkType);
          cleanUpAndExit(NAILGUN_UNEXPECTED_CHUNKTYPE);
    }
  /*}*/
}