Apache-Scoreboard
view release on metacpan or search on metacpan
Scoreboard.xs view on Meta::CPAN
Move(&buf[0], dptr, sizeof(buf), char);
dptr += sizeof(buf);
Move(&sb->parent[0], dptr, psize, char);
dptr += psize;
for (i = 0; i < image->server_limit; i++) {
Move(sb->servers[i], dptr, msize, char);
dptr += msize;
}
Move(&sb->global, dptr, sizeof(global_score), char);
OUTPUT:
RETVAL
Apache::Scoreboard
thaw(CLASS, pool, packet)
SV *CLASS
APR::Pool pool
SV *packet
PREINIT:
modperl_scoreboard_t *image;
Scoreboard.xs view on Meta::CPAN
sb->global = (global_score *)Copy_pool(pool, ptr,
sizeof(global_score), char);
image->pool = pool;
image->sb = sb;
/* debug_dump_sb(image); */
RETVAL = image;
OUTPUT:
RETVAL
SV *
image(CLASS, pool_sv)
SV *CLASS
SV *pool_sv
INIT:
modperl_scoreboard_t *image;
Scoreboard.xs view on Meta::CPAN
}
else {
Perl_croak(aTHX_ "ap_scoreboard_image doesn't exist");
}
RETVAL = sv_setref_pv(NEWSV(0, 0), "Apache::Scoreboard", (void*)image);
/* make sure the pool sticks around as long as this object is alive */
mpxs_add_pool_magic(RETVAL, pool_sv);
CLASS = CLASS; /* avoid warnings */
OUTPUT:
RETVAL
int
server_limit(image)
Apache::Scoreboard image
int
thread_limit(image)
Apache::Scoreboard image
Scoreboard.xs view on Meta::CPAN
RETVAL = (modperl_parent_score_t *)apr_pcalloc(image->pool,
(sizeof(*RETVAL)));
RETVAL->record = ps;
RETVAL->idx = idx;
RETVAL->image = image;
}
else {
XSRETURN_UNDEF;
}
OUTPUT:
RETVAL
Apache::ScoreboardWorkerScore
worker_score(image, parent_idx, worker_idx)
Apache::Scoreboard image
int parent_idx
int worker_idx
PREINIT:
worker_score *ws;
CODE:
ws = my_get_scoreboard_worker(aTHX_ image, parent_idx, worker_idx);
RETVAL = (modperl_worker_score_t *)apr_pcalloc(image->pool,
(sizeof(*RETVAL)));
RETVAL->parent_idx = parent_idx;
RETVAL->worker_idx = worker_idx;
RETVAL->record = ws;
OUTPUT:
RETVAL
SV *
pids(image)
Apache::Scoreboard image
PREINIT:
AV *av = newAV();
int i;
scoreboard *sb;
Scoreboard.xs view on Meta::CPAN
if (!(sb->parent[i].pid)) {
break;
}
/* fprintf(stderr, "pids: server %d: pid %d\n",
i, (int)(sb->parent[i].pid)); */
av_push(av, newSViv(sb->parent[i].pid));
}
RETVAL = newRV_noinc((SV*)av);
OUTPUT:
RETVAL
# XXX: need to move pid_t => apr_proc_t and work with pid->pid as in
# find_child_by_pid from scoreboard.c
int
parent_idx_by_pid(image, pid)
Apache::Scoreboard image
pid_t pid
Scoreboard.xs view on Meta::CPAN
sb = image->sb;
RETVAL = -1;
for (i = 0; i < image->server_limit; i++) {
if (sb->parent[i].pid == pid) {
RETVAL = i;
break;
}
}
OUTPUT:
RETVAL
SV *
thread_numbers(image, parent_idx)
Apache::Scoreboard image
int parent_idx
PREINIT:
AV *av = newAV();
int i;
Scoreboard.xs view on Meta::CPAN
for (i = 0; i < image->thread_limit; ++i) {
/* fprintf(stderr, "thread_num: server %d, thread %d pid %d\n",
i, sb->servers[parent_idx][i].thread_num,
(int)(sb->parent[parent_idx].pid)); */
av_push(av, newSViv(sb->servers[parent_idx][i].thread_num));
}
RETVAL = newRV_noinc((SV*)av);
OUTPUT:
RETVAL
apr_uint32_t
scoreboard_up_time(image)
Apache::Scoreboard image
Scoreboard.xs view on Meta::CPAN
RETVAL = (modperl_parent_score_t *)apr_pcalloc(image->pool,
sizeof(*RETVAL));
RETVAL->record = ps;
RETVAL->idx = next_idx;
RETVAL->image = image;
}
else {
XSRETURN_UNDEF;
}
OUTPUT:
RETVAL
Apache::ScoreboardWorkerScore
worker_score(self)
Apache::ScoreboardParentScore self
CODE:
RETVAL = (modperl_worker_score_t *)apr_pcalloc(self->image->pool,
sizeof(*RETVAL));
RETVAL->parent_idx = self->idx;
RETVAL->worker_idx = 0;
RETVAL->record = my_get_scoreboard_worker(aTHX_ self->image,
self->idx, 0);
OUTPUT:
RETVAL
Apache::ScoreboardWorkerScore
next_worker_score(self, mws)
Apache::ScoreboardParentScore self
Apache::ScoreboardWorkerScore mws
PREINIT:
int next_idx;
Scoreboard.xs view on Meta::CPAN
sizeof(*RETVAL));
RETVAL->parent_idx = mws->parent_idx;
RETVAL->worker_idx = next_idx;
RETVAL->record = my_get_scoreboard_worker(aTHX_ self->image,
mws->parent_idx, next_idx);
}
else {
XSRETURN_UNDEF;
}
OUTPUT:
RETVAL
Apache::ScoreboardWorkerScore
next_live_worker_score(self, mws)
Apache::ScoreboardParentScore self
Apache::ScoreboardWorkerScore mws
PREINIT:
int next_idx;
Scoreboard.xs view on Meta::CPAN
RETVAL->worker_idx = next_idx;
found++;
break;
}
}
if (!found) {
XSRETURN_UNDEF;
}
OUTPUT:
RETVAL
Apache::ScoreboardWorkerScore
next_active_worker_score(self, mws)
Apache::ScoreboardParentScore self
Apache::ScoreboardWorkerScore mws
PREINIT:
Scoreboard.xs view on Meta::CPAN
RETVAL->worker_idx = next_idx;
found++;
break;
}
}
if (!found) {
XSRETURN_UNDEF;
}
OUTPUT:
RETVAL
pid_t
parent_score_pid(self)
Apache::ScoreboardParentScore self
Scoreboard.xs view on Meta::CPAN
RETVAL = 0L;
}
else {
RETVAL = (long)
((self->record->stop_time - self->record->start_time) / 1000);
}
if (RETVAL < 0L || !self->record->access_count) {
RETVAL = 0L;
}
OUTPUT:
RETVAL
SV *
worker_score_status(self)
Apache::ScoreboardWorkerScore self
CODE:
RETVAL = newSV(0);
sv_setnv(RETVAL, (double)self->record->status);
Perl_sv_setpvf(aTHX_ RETVAL, "%c", status_flags[self->record->status]);
SvNOK_on(RETVAL); /* dual-var */
OUTPUT:
RETVAL
# at the moment always gives 0 (blame httpd)
U32
worker_score_tid(self)
Apache::ScoreboardWorkerScore self
CODE:
RETVAL = worker_score_tid(self);
OUTPUT:
RETVAL
int
worker_score_thread_num(self)
Apache::ScoreboardWorkerScore self
unsigned long
worker_score_access_count(self)
Apache::ScoreboardWorkerScore self
( run in 0.367 second using v1.01-cache-2.11-cpan-4e96b696675 )