- DBG("received msg is %s", received_msg);
-
- if(!strcmp(rep_code, "OK")) {
- DBG("got subbuffer %s", buf->name);
- retval = GET_SUBBUF_OK;
- }
- else if(nth_token_is(received_msg, "END", 0) == 1) {
- return GET_SUBBUF_DONE;
- }
- else {
- DBG("error getting subbuffer %s", buf->name);
- retval = -1;
- }
-
- /* FIMXE: free correctly the stuff */
- free(received_msg);
- free(rep_code);
- return retval;
-}
-
-int put_subbuffer(struct buffer_info *buf)
-{
- char *send_msg;
- char *received_msg;
- char *rep_code;
- int retval;
- int result;
-
- asprintf(&send_msg, "put_subbuffer %s %ld", buf->name, buf->consumed_old);
- result = ustcomm_send_request(&buf->conn, send_msg, &received_msg);
- if(result < 0) {
- ERR("put_subbuffer: send_message failed");
- return -1;
- }
- free(send_msg);
-
- result = sscanf(received_msg, "%as", &rep_code);
- if(result != 1) {
- ERR("unable to parse response to put_subbuffer");
- return -1;
- }
- free(received_msg);
-
- if(!strcmp(rep_code, "OK")) {
- DBG("subbuffer put %s", buf->name);
- retval = PUT_SUBBUF_OK;
- }
- else {
- DBG("put_subbuffer: received error, we were pushed");
- return PUT_SUBBUF_PUSHED;
- }
-
- free(rep_code);
- return retval;
-}
-
-/* This write is patient because it restarts if it was incomplete.
- */
-
-ssize_t patient_write(int fd, const void *buf, size_t count)
-{
- const char *bufc = (const char *) buf;
- int result;
-
- for(;;) {
- result = write(fd, bufc, count);
- if(result <= 0) {
- return result;
- }
- count -= result;
- bufc += result;
-
- if(count == 0) {
- break;
- }
- }
-
- return bufc-(const char *)buf;
-}
-
-void decrement_active_buffers(void *arg)
-{
- pthread_mutex_lock(&active_buffers_mutex);
- active_buffers--;
- pthread_mutex_unlock(&active_buffers_mutex);
-}
-
-void *consumer_thread(void *arg)
-{
- struct buffer_info *buf = (struct buffer_info *) arg;
- int result;