示例#1
0
文件: pipe.c 项目: orafce/orafce
Datum
dbms_pipe_send_message(PG_FUNCTION_ARGS)
{
	text *pipe_name = NULL;
	int timeout = ONE_YEAR;
	int limit = 0;
	bool valid_limit;

	int cycle = 0;
	float8 endtime;

	if (PG_ARGISNULL(0))
		ereport(ERROR,
				(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
				 errmsg("pipe name is NULL"),
				 errdetail("Pipename may not be NULL.")));
	else
		pipe_name = PG_GETARG_TEXT_P(0);

	output_buffer = check_buffer(output_buffer, LOCALMSGSZ);

	if (!PG_ARGISNULL(1))
		timeout = PG_GETARG_INT32(1);

	if (PG_ARGISNULL(2))
		valid_limit = false;
	else
	{
		limit = PG_GETARG_INT32(2);
		valid_limit = true;
	}

	if (input_buffer != NULL) /* XXX Strange? */
	{
		pfree(input_buffer);
		input_buffer = NULL;
	}

	WATCH_PRE(timeout, endtime, cycle);
	if (add_to_pipe(pipe_name, output_buffer,
					limit, valid_limit))
		break;
	WATCH_POST(timeout, endtime, cycle);

	init_buffer(output_buffer, LOCALMSGSZ);

	PG_RETURN_INT32(RESULT_DATA);
}
示例#2
0
文件: pipeline.hpp 项目: 6qat/fix8
 ff_pipe(bool input_ch, Arguments...args):ff_pipeline(input_ch) {
     std::tuple<Arguments...> t = std::make_tuple(args...);
     auto firstF = std::get<0>(t);
     add2pipe(firstF);
     for_each(t,add_to_pipe(this));
 }
示例#3
0
文件: pipeline.hpp 项目: 6qat/fix8
 ff_pipe(Arguments...args) {
     std::tuple<Arguments...> t = std::make_tuple(args...);
     auto firstF = std::get<0>(t);
     add2pipe(firstF);
     for_each(t,add_to_pipe(this));
 }