Exemplo n.º 1
0
/*
 * Sends a response to a command continuation request.
 */
int
send_continuation(session *ssn, const char *data, size_t len)
{

	if (ssn->socket == -1)
		return -1;

	if (socket_write(ssn, data, len) == -1 ||
	    socket_write(ssn, "\r\n", strlen("\r\n")) == -1)
		return -1;

	if (opts.debug) {
		unsigned int i;

		debug("sending continuation data (%d):\n\n", ssn->socket);
		
		for (i = 0; i < len; i++)
			debugc(data[i]);
		
		debug("\r\n\n");
			
	}

	return 0;
}
int
mrb_freertos_rwlock_unlock(mrb_state *mrb, mrb_rwlock_t *lock)
{
  debugc('U');
  xSemaphoreHandle mutex = (xSemaphoreHandle)lock->rwlock;
  if (mutex == NULL) {
    return RWLOCK_STATUS_INVALID_ARGUMENTS;
  }
  if (pdTRUE == xSemaphoreGiveRecursive(mutex)) {
    debugc('u');
    return RWLOCK_STATUS_OK;
  }else{
    debugc('X');
    return RWLOCK_STATUS_UNKNOWN; /*maybe give(unlock) without take(lock) called*/
  } 
}
int
mrb_freertos_rwlock_wrlock(mrb_state *mrb, mrb_rwlock_t *lock, uint32_t timeout_ms)
{
  debugc('L');
  xSemaphoreHandle mutex = (xSemaphoreHandle)lock->rwlock;
  if (mutex == NULL) {
    return RWLOCK_STATUS_INVALID_ARGUMENTS;
  }

  portTickType timeout_tick = timeout_ms / portTICK_RATE_MS;
  if (pdTRUE == xSemaphoreTakeRecursive(mutex, timeout_tick)) {
    debugc('l');
    return RWLOCK_STATUS_OK;
  }else{
    debugc('x');
    return RWLOCK_STATUS_TIMEOUT;
  }
}
Exemplo n.º 4
0
/*
 * Read data the server sent.
 */
int
receive_response(session *ssn, char *buf)
{
	ssize_t n;

	if ((n = socket_read(ssn, buf, INPUT_BUF)) == -1)
		return -1;


	if (opts.debug > 0) {
		int i;
		
		debug("getting response (%d):\n\n", ssn->socket);

		for (i = 0; i < n; i++)
			debugc(buf[i]);

		debug("\n");
	}

	return n;
}
Exemplo n.º 5
0
/*
 * Read data the server sent.
 */
int
receive_response(session *ssn, char *buf, long timeout, int timeoutfail)
{
	ssize_t n;

	if ((n = socket_read(ssn, buf, INPUT_BUF, timeout ? timeout :
	    (long)(get_option_number("timeout")), timeoutfail)) == -1)
		return -1;


	if (opts.debug) {
		int i;
		
		debug("getting response (%d):\n\n", ssn->socket);

		for (i = 0; i < n; i++)
			debugc(buf[i]);

		debug("\n");
	}

	return n;
}