Пример #1
0
EXPORT_SYM bool
hdfs_future_get_timeout(struct hdfs_rpc_response_future *future, struct hdfs_object **object, uint64_t ms)
{
	uint64_t absms;

	absms = _now_ms() + ms;
	_lock(&future->fu_lock);
	while (!future->fu_res && _now_ms() < absms)
		_waitlimit(&future->fu_lock, &future->fu_cond, absms);
	if (!future->fu_res) {
		_unlock(&future->fu_lock);
		return false;
	}
	_unlock(&future->fu_lock);
	*object = future->fu_res;

	_namenode_decref(future->fu_namenode);
	memset(future, 0, sizeof *future);
	return true;
}
Пример #2
0
EXPORT_SYM bool
hdfs_future_get_timeout(struct hdfs_rpc_response_future *future, struct hdfs_object **object, uint64_t ms)
{
	uint64_t absms;

	ASSERT(future->fu_inited && future->fu_invoked);

	absms = _now_ms() + ms;
	_lock(&future->fu_lock);
	while (!future->fu_res && _now_ms() < absms)
		_waitlimit(&future->fu_lock, &future->fu_cond, absms);
	if (!future->fu_res) {
		_unlock(&future->fu_lock);
		return false;
	}
	_unlock(&future->fu_lock);
	*object = future->fu_res;

	hdfs_rpc_response_future_clean(future);
	return true;
}