本文整理汇总了C++中set_ps_display函数的典型用法代码示例。如果您正苦于以下问题:C++ set_ps_display函数的具体用法?C++ set_ps_display怎么用?C++ set_ps_display使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了set_ps_display函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: test__set_ps_display__real_act_prefix_size
/*
* MPP-220077: real_act_prefix_size should not go beyond ps_buffer_size
*/
void
test__set_ps_display__real_act_prefix_size(void **state)
{
int len;
ps_buffer = (char *) malloc(127 * sizeof(char));
ps_buffer_fixed_size = 79;
memset(ps_buffer, 'x', ps_buffer_fixed_size * sizeof(char));
ps_buffer_size = 127;
IsUnderPostmaster = true;
StrNCpy(ps_host_info, "msa4000125.europe.corp.microsoft.com(57193)",
sizeof(ps_host_info));
ps_host_info_size = 0;
gp_session_id = 26351;
Gp_role = GP_ROLE_DISPATCH;
Gp_segment = -1;
gp_command_count = 964;
currentSliceId = -1;
set_ps_display("testing activity", true);
assert_true(real_act_prefix_size <= ps_buffer_size);
get_real_act_ps_display(&len);
assert_true(len >= 0);
}
示例2: XLogWalRcvFlush
/* Flush the log to disk */
static void
XLogWalRcvFlush(void)
{
if (XLByteLT(LogstreamResult.Flush, LogstreamResult.Write))
{
/* use volatile pointer to prevent code rearrangement */
volatile WalRcvData *walrcv = WalRcv;
issue_xlog_fsync(recvFile, recvId, recvSeg);
LogstreamResult.Flush = LogstreamResult.Write;
/* Update shared-memory status */
SpinLockAcquire(&walrcv->mutex);
walrcv->latestChunkStart = walrcv->receivedUpto;
walrcv->receivedUpto = LogstreamResult.Flush;
SpinLockRelease(&walrcv->mutex);
/* Report XLOG streaming progress in PS display */
if (update_process_title)
{
char activitymsg[50];
snprintf(activitymsg, sizeof(activitymsg), "streaming %X/%X",
LogstreamResult.Write.xlogid,
LogstreamResult.Write.xrecoff);
set_ps_display(activitymsg, false);
}
}
}
示例3: PerformAuthentication
/*
* PerformAuthentication -- authenticate a remote client
*
* returns: nothing. Will not return at all if there's any failure.
*/
static void
PerformAuthentication(Port *port)
{
/* This should be set already, but let's make sure */
ClientAuthInProgress = true; /* limit visibility of log messages */
/*
* In EXEC_BACKEND case, we didn't inherit the contents of pg_hba.conf
* etcetera from the postmaster, and have to load them ourselves. Note we
* are loading them into the startup transaction's memory context, not
* PostmasterContext, but that shouldn't matter.
*
* FIXME: [fork/exec] Ugh. Is there a way around this overhead?
*/
#ifdef EXEC_BACKEND
if (!load_hba())
{
/*
* It makes no sense to continue if we fail to load the HBA file,
* since there is no way to connect to the database in this case.
*/
ereport(FATAL,
(errmsg("could not load pg_hba.conf")));
}
load_ident();
#endif
/*
* Set up a timeout in case a buggy or malicious client fails to respond
* during authentication. Since we're inside a transaction and might do
* database access, we have to use the statement_timeout infrastructure.
*/
enable_timeout_after(STATEMENT_TIMEOUT, AuthenticationTimeout * 1000);
/*
* Now perform authentication exchange.
*/
ClientAuthentication(port); /* might not return, if failure */
/*
* Done with authentication. Disable the timeout, and log if needed.
*/
disable_timeout(STATEMENT_TIMEOUT, false);
if (Log_connections)
{
if (am_walsender)
ereport(LOG,
(errmsg("replication connection authorized: user=%s",
port->user_name)));
else
ereport(LOG,
(errmsg("connection authorized: user=%s database=%s",
port->user_name, port->database_name)));
}
set_ps_display("startup", false);
ClientAuthInProgress = false; /* client_min_messages is active now */
}
示例4: init_ps_display
/*
* Call this once during subprocess startup to set the identification
* values. At this point, the original argv[] array may be overwritten.
*/
void init_ps_display(
const char *username,
const char *dbname,
const char *host_info,
const char *initial_str)
{
ASSERT(username);
ASSERT(dbname);
ASSERT(host_info);
#ifndef PS_USE_NONE
/* no ps display for stand-alone backend */
if (!child)
return;
/* no ps display if you didn't call save_args() */
if (!save_argv)
return;
#ifdef PS_USE_CLOBBER_ARGV
/* If ps_buffer is a pointer, it might still be null */
if (!ps_buffer)
return;
#endif // PS_USE_CLOBBER_ARGV
/*
* Overwrite argv[] to point at appropriate space, if needed
*/
#ifdef PS_USE_CHANGE_ARGV
save_argv[0] = ps_buffer;
save_argv[1] = NULL;
#endif /* PS_USE_CHANGE_ARGV */
#ifdef PS_USE_CLOBBER_ARGV
int i;
/* make extra argv slots point at end_of_area (a NUL) */
for (i = 1; i < save_argc; i++)
save_argv[i] = ps_buffer + ps_buffer_size;
#endif /* PS_USE_CLOBBER_ARGV */
/*
* Make fixed prefix of ps display.
*/
#ifdef PS_USE_SETPROCTITLE
/*
* apparently setproctitle() already adds a `progname:' prefix to the
* ps line
*/
snprintf(ps_buffer, ps_buffer_size, "%s %s %s ", username, dbname, host_info);
#else
snprintf(ps_buffer, ps_buffer_size, "postgres: %s %s %s ", username, dbname, host_info);
#endif // PS_USE_SETPROCTITLE
ps_buffer_cur_len = ps_buffer_fixed_size = strlen(ps_buffer);
set_ps_display(initial_str, true);
#endif /* not PS_USE_NONE */
}
示例5: test__set_ps_display
/*
* Check it won't crash in case the ps_buffer overflows.
*/
void
test__set_ps_display(void **state)
{
ps_buffer = (char *) malloc(64 * sizeof(char));
memset(ps_buffer, 0x7F, 64 * sizeof(char));
ps_buffer_fixed_size = 25;
ps_buffer_size = 32;
IsUnderPostmaster = true;
gp_session_id = 1024;
Gp_role = GP_ROLE_DISPATCH;
Gp_segment = 24;
gp_command_count = 1024;
currentSliceId = 40;
set_ps_display("testing activity", true);
set_ps_display("testing activity", false);
assert_true(ps_buffer[32] == 0x7f);
}
示例6: main
/*************************M*A*I*N*************************/
int main(void) {
turtle_t boo;
pen_t pen;
srand(time(NULL));
set_ps_header(HEIGHT, WIDTH);
process_commands(&boo, &pen);
set_ps_display();
return 0;
}
示例7: main
/*************************M*A*I*N*************************/
int main(void) {
turtle_t boo;
pen_t pen;
srand(time(NULL));
set_ps_header(HEIGHT, WIDTH);
turtle_goto(&boo, 297.5, 420.5);
turtle_random_walk(&boo, &pen, 20000);
set_ps_display();
return 0;
}
示例8: do_worker_child
/*
* worker child main loop
*/
void do_worker_child(void)
{
pool_debug("I am %d", getpid());
/* Identify myself via ps */
init_ps_display("", "", "", "");
set_ps_display("worker process", false);
/* set up signal handlers */
signal(SIGALRM, SIG_DFL);
signal(SIGTERM, my_signal_handler);
signal(SIGINT, my_signal_handler);
signal(SIGHUP, reload_config_handler);
signal(SIGQUIT, my_signal_handler);
signal(SIGCHLD, SIG_IGN);
signal(SIGUSR1, my_signal_handler);
signal(SIGUSR2, SIG_IGN);
signal(SIGPIPE, SIG_IGN);
/* Initialize my backend status */
pool_initialize_private_backend_status();
/* Initialize per process context */
pool_init_process_context();
for (;;)
{
CHECK_REQUEST;
if (pool_config->sr_check_period <= 0)
{
sleep(30);
}
/*
* If streaming replication mode, do time lag checking
*/
if (pool_config->sr_check_period > 0 && MASTER_SLAVE && !strcmp(pool_config->master_slave_sub_mode, MODE_STREAMREP))
{
/* Check and establish persistent connections to the backend */
establish_persistent_connection();
/* Do replication time lag checking */
check_replication_time_lag();
/* Discard persistent connections */
discard_persistent_connection();
}
sleep(pool_config->sr_check_period);
}
exit(0);
}
示例9: spt_setproctitle
static PyObject *
spt_setproctitle(PyObject *self /* Not used */, PyObject *args)
{
const char *title;
if (!PyArg_ParseTuple(args, "s", &title))
return NULL;
set_ps_display(title, true);
Py_INCREF(Py_None);
return Py_None;
}
示例10: fork_a_lifecheck
/* fork lifecheck process*/
static pid_t
fork_a_lifecheck(int fork_wait_time)
{
pid_t pid;
pid = fork();
if (pid != 0)
{
if (pid == -1)
pool_error("fork_a_lifecheck: fork() failed.");
return pid;
}
if (fork_wait_time > 0) {
sleep(fork_wait_time);
}
myargv = save_ps_display_args(myargc, myargv);
POOL_SETMASK(&UnBlockSig);
init_ps_display("", "", "", "");
signal(SIGTERM, wd_exit);
signal(SIGINT, wd_exit);
signal(SIGQUIT, wd_exit);
signal(SIGCHLD, SIG_DFL);
signal(SIGHUP, SIG_IGN);
signal(SIGPIPE, SIG_IGN);
set_ps_display("lifecheck",false);
/* wait until ready to go */
while (WD_OK != is_wd_lifecheck_ready())
{
sleep(pool_config->wd_interval * 10);
}
pool_log("watchdog: lifecheck started");
/* watchdog loop */
for (;;)
{
/* pgpool life check */
wd_lifecheck();
sleep(pool_config->wd_interval);
}
return pid;
}
示例11: pool_ps_idle_display
/*
* Show ps idle status
*/
void
pool_ps_idle_display(POOL_CONNECTION_POOL * backend)
{
StartupPacket *sp;
char psbuf[1024];
sp = MASTER_CONNECTION(backend)->sp;
if (MASTER(backend)->tstate == 'T')
snprintf(psbuf, sizeof(psbuf), "%s %s %s idle in transaction",
sp->user, sp->database, remote_ps_data);
else
snprintf(psbuf, sizeof(psbuf), "%s %s %s idle",
sp->user, sp->database, remote_ps_data);
set_ps_display(psbuf, false);
}
示例12: XLogWalRcvFlush
/*
* Flush the log to disk.
*
* If we're in the midst of dying, it's unwise to do anything that might throw
* an error, so we skip sending a reply in that case.
*/
static void
XLogWalRcvFlush(bool dying)
{
if (XLByteLT(LogstreamResult.Flush, LogstreamResult.Write))
{
/* use volatile pointer to prevent code rearrangement */
volatile WalRcvData *walrcv = WalRcv;
issue_xlog_fsync(recvFile, recvId, recvSeg);
LogstreamResult.Flush = LogstreamResult.Write;
/* Update shared-memory status */
SpinLockAcquire(&walrcv->mutex);
if (XLByteLT(walrcv->receivedUpto, LogstreamResult.Flush))
{
walrcv->latestChunkStart = walrcv->receivedUpto;
walrcv->receivedUpto = LogstreamResult.Flush;
}
SpinLockRelease(&walrcv->mutex);
/* Signal the startup process and walsender that new WAL has arrived */
WakeupRecovery();
if (AllowCascadeReplication())
WalSndWakeup();
/* Report XLOG streaming progress in PS display */
if (update_process_title)
{
char activitymsg[50];
snprintf(activitymsg, sizeof(activitymsg), "streaming %X/%X",
LogstreamResult.Write.xlogid,
LogstreamResult.Write.xrecoff);
set_ps_display(activitymsg, false);
}
/* Also let the master know that we made some progress */
if (!dying)
{
XLogWalRcvSendReply();
XLogWalRcvSendHSFeedback();
}
}
}
示例13: init_ps_display
/*
* Call this once during subprocess startup to set the identification
* values. At this point, the original argv[] array may be overwritten.
*/
void
init_ps_display(const char *initial_str)
{
#ifndef PS_USE_NONE
/* no ps display if you didn't call save_ps_display_args() */
if (!save_argv)
return;
#ifdef PS_USE_CLOBBER_ARGV
/* If ps_buffer is a pointer, it might still be null */
if (!ps_buffer)
return;
#endif
/*
* Overwrite argv[] to point at appropriate space, if needed
*/
#ifdef PS_USE_CHANGE_ARGV
save_argv[0] = ps_buffer;
save_argv[1] = NULL;
#endif /* PS_USE_CHANGE_ARGV */
#ifdef PS_USE_CLOBBER_ARGV
{
int i;
/* make extra argv slots point at end_of_area (a NUL) */
for (i = 1; i < save_argc; i++)
save_argv[i] = ps_buffer + ps_buffer_size;
}
#endif /* PS_USE_CLOBBER_ARGV */
/*
* Make fixed prefix of ps display.
*/
ps_buffer[0] = '\0';
ps_buffer_fixed_size = strlen(ps_buffer);
set_ps_display(initial_str, true);
#endif /* not PS_USE_NONE */
}
示例14: PgArchiverMain
/*
* PgArchiverMain
*
* The argc/argv parameters are valid only in EXEC_BACKEND case. However,
* since we don't use 'em, it hardly matters...
*/
NON_EXEC_STATIC void
PgArchiverMain(int argc, char *argv[])
{
IsUnderPostmaster = true; /* we are a postmaster subprocess now */
MyProcPid = getpid(); /* reset MyProcPid */
/* Lose the postmaster's on-exit routines */
on_exit_reset();
/*
* Ignore all signals usually bound to some action in the postmaster,
* except for SIGHUP, SIGUSR1 and SIGQUIT.
*/
pqsignal(SIGHUP, ArchSigHupHandler);
pqsignal(SIGINT, SIG_IGN);
pqsignal(SIGTERM, SIG_IGN);
pqsignal(SIGQUIT, pgarch_exit);
pqsignal(SIGALRM, SIG_IGN);
pqsignal(SIGPIPE, SIG_IGN);
pqsignal(SIGUSR1, pgarch_waken);
pqsignal(SIGUSR2, SIG_IGN);
pqsignal(SIGCHLD, SIG_DFL);
pqsignal(SIGTTIN, SIG_DFL);
pqsignal(SIGTTOU, SIG_DFL);
pqsignal(SIGCONT, SIG_DFL);
pqsignal(SIGWINCH, SIG_DFL);
PG_SETMASK(&UnBlockSig);
/*
* Identify myself via ps
*/
init_ps_display("archiver process", "", "");
set_ps_display("");
pgarch_MainLoop();
exit(0);
}
示例15: WalSndHandshake
/*
* Execute commands from walreceiver, until we enter streaming mode.
*/
static void
WalSndHandshake(void)
{
StringInfoData input_message;
bool replication_started = false;
initStringInfo(&input_message);
while (!replication_started)
{
int firstchar;
WalSndSetState(WALSNDSTATE_STARTUP);
set_ps_display("idle", false);
/* Wait for a command to arrive */
firstchar = pq_getbyte();
/*
* Emergency bailout if postmaster has died. This is to avoid the
* necessity for manual cleanup of all postmaster children.
*/
if (!PostmasterIsAlive())
exit(1);
/*
* Check for any other interesting events that happened while we
* slept.
*/
if (got_SIGHUP)
{
got_SIGHUP = false;
ProcessConfigFile(PGC_SIGHUP);
}
if (firstchar != EOF)
{
/*
* Read the message contents. This is expected to be done without
* blocking because we've been able to get message type code.
*/
if (pq_getmessage(&input_message, 0))
firstchar = EOF; /* suitable message already logged */
}
/* Handle the very limited subset of commands expected in this phase */
switch (firstchar)
{
case 'Q': /* Query message */
{
const char *query_string;
query_string = pq_getmsgstring(&input_message);
pq_getmsgend(&input_message);
if (HandleReplicationCommand(query_string))
replication_started = true;
}
break;
case 'X':
/* standby is closing the connection */
proc_exit(0);
case EOF:
/* standby disconnected unexpectedly */
ereport(COMMERROR,
(errcode(ERRCODE_PROTOCOL_VIOLATION),
errmsg("unexpected EOF on standby connection")));
proc_exit(0);
default:
ereport(FATAL,
(errcode(ERRCODE_PROTOCOL_VIOLATION),
errmsg("invalid standby handshake message type %d", firstchar)));
}
}
}