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); }
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)); }
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)); }