summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2013-09-18 20:53:41 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2013-09-18 20:53:41 +0800
commitd923adcd689b164a28d6bd16ea08f1b8fa77a001 (patch)
treed9241929bf34c7fbdb5f2f0908ec39261abeea69
parent061ff2f1679bf572e940f4106cc0d05fd8840d83 (diff)
downloadpttbbs-d923adcd689b164a28d6bd16ea08f1b8fa77a001.tar
pttbbs-d923adcd689b164a28d6bd16ea08f1b8fa77a001.tar.gz
pttbbs-d923adcd689b164a28d6bd16ea08f1b8fa77a001.tar.bz2
pttbbs-d923adcd689b164a28d6bd16ea08f1b8fa77a001.tar.lz
pttbbs-d923adcd689b164a28d6bd16ea08f1b8fa77a001.tar.xz
pttbbs-d923adcd689b164a28d6bd16ea08f1b8fa77a001.tar.zst
pttbbs-d923adcd689b164a28d6bd16ea08f1b8fa77a001.zip
Add missed_assign to angel data.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@5875 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/daemon/angelbeats/angelbeats.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/pttbbs/daemon/angelbeats/angelbeats.c b/pttbbs/daemon/angelbeats/angelbeats.c
index 8f35ca80..827b252d 100644
--- a/pttbbs/daemon/angelbeats/angelbeats.c
+++ b/pttbbs/daemon/angelbeats/angelbeats.c
@@ -116,6 +116,7 @@ typedef struct {
time_t last_activity; // last known activity from master
time_t last_assigned; // last time being assigned with new master
int last_assigned_master; // uid of last new master
+ int missed_assign; // how many times this angel was not assigned.
int uid;
int masters; // counter of who have this one as angel
char userid[IDLEN+1];
@@ -314,9 +315,12 @@ suggest_online_angel(int master_uid) {
if (is_pause)
continue;
+ if (master_uid)
+ kanade->missed_assign++;
#ifdef TRACE_ANGEL_SELECTION
- log("\n %d.%*s(masters=%d,act=%d,assigned=%d%s) ", ++found, IDLEN,
- kanade->userid, kanade->masters,
+ log("\n %d.%*s(missed=%d,masters=%d,act=%d,assigned=%d%s) ",
+ ++found, IDLEN,
+ kanade->userid, kanade->missed_assign, kanade->masters,
(int)(clk - kanade->last_activity),
(int)(clk - kanade->last_assigned),
((int)(clk - kanade->last_assigned) <
@@ -357,6 +361,7 @@ inc_angel_master(int uid, int master_uid) {
kanade->masters++;
kanade->last_assigned = now;
kanade->last_assigned_master = master_uid;
+ kanade->missed_assign = 0;
return 1;
}
@@ -470,6 +475,7 @@ create_angel_report(int myuid, angel_beats_report *prpt) {
prpt->total_angels = g_angel_list_size;
prpt->my_index = 0;
prpt->my_active_index = 0;
+ prpt->missed_assign = 0;
prpt->inactive_days = ANGELBEATS_INACTIVE_TIME / DAY_SECONDS;
for (i = 0; i < g_angel_list_size; i++, kanade++) {
@@ -531,6 +537,7 @@ create_angel_report(int myuid, angel_beats_report *prpt) {
prpt->my_active_masters = kanade->masters;
prpt->last_assigned = kanade->last_assigned;
prpt->last_assigned_master = kanade->last_assigned_master;
+ prpt->missed_assign = kanade->missed_assign;
}
return 0;
}
@@ -765,6 +772,7 @@ client_cb(int fd, short event, void *arg) {
}
}
break;
+
case ANGELBEATS_REQ_REPORT:
log("%s angel [%s] request for report\n",
Cdatelite(&clk), master_uid);
@@ -773,7 +781,7 @@ client_cb(int fd, short event, void *arg) {
rpt.cb = sizeof(rpt);
create_angel_report(data.angel_uid, &rpt);
// write different kind of data!
- write(fd, &rpt, sizeof(rpt));
+ write(fd, &rpt, rpt.cb);
goto end;
}
break;