Merge pull request #149 from kanoi/master README/api.c add "When" the request was processed to STATUS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
diff --git a/README b/README
index e327a5e..ba9d86a 100644
--- a/README
+++ b/README
@@ -594,9 +594,11 @@ An example request in both formats to set GPU 0 fan to 80%:
The format of each reply (unless stated otherwise) is a STATUS section
followed by an optional detail section
+For API version 1.4:
+
The STATUS section is:
- STATUS=X,Code=N,Msg=string,Description=string|
+ STATUS=X,When=NNN,Code=N,Msg=string,Description=string|
STATUS=X Where X is one of:
W - Warning
@@ -605,6 +607,9 @@ The STATUS section is:
E - Error
F - Fatal (code bug)
+ When=NNN
+ Standard long time of request in seconds
+
Code=N
Each unique reply has a unigue Code (See api.c - #define MSG_NNNNNN)
@@ -615,7 +620,7 @@ The STATUS section is:
This defaults to the cgminer version but is the value of --api-description
if it was specified at runtime.
-For API version 1.3:
+For API version 1.4:
The list of requests - a (*) means it requires privileged access - and replies are:
diff --git a/api.c b/api.c
index 9528230..dd2af0b 100644
--- a/api.c
+++ b/api.c
@@ -152,7 +152,7 @@ static const char *COMMA = ",";
static const char SEPARATOR = '|';
static const char GPUSEP = ',';
-static const char *APIVERSION = "1.3";
+static const char *APIVERSION = "1.4";
static const char *DEAD = "Dead";
static const char *SICK = "Sick";
static const char *NOSTART = "NoStart";
@@ -371,6 +371,8 @@ static int my_thr_id = 0;
static int bye = 0;
static bool ping = true;
+static time_t when = 0; // when the request occurred
+
struct IP4ACCESS {
in_addr_t ip;
in_addr_t mask;
@@ -411,9 +413,9 @@ static char *message(int messageid, int paramid, char *param2, bool isjson)
}
if (isjson)
- sprintf(msg_buffer, JSON_START JSON_STATUS "{\"" _STATUS "\":\"%c\",\"Code\":%d,\"Msg\":\"", severity, messageid);
+ sprintf(msg_buffer, JSON_START JSON_STATUS "{\"" _STATUS "\":\"%c\",\"When\":%lu,\"Code\":%d,\"Msg\":\"", severity, (unsigned long)when, messageid);
else
- sprintf(msg_buffer, _STATUS "=%c,Code=%d,Msg=", severity, messageid);
+ sprintf(msg_buffer, _STATUS "=%c,When=%lu,Code=%d,Msg=", severity, (unsigned long)when, messageid);
ptr = msg_buffer + strlen(msg_buffer);
@@ -474,11 +476,11 @@ static char *message(int messageid, int paramid, char *param2, bool isjson)
}
if (isjson)
- sprintf(msg_buffer, JSON_START JSON_STATUS "{\"" _STATUS "\":\"F\",\"Code\":-1,\"Msg\":\"%d\",\"Description\":\"%s\"}" JSON_CLOSE,
- messageid, opt_api_description);
+ sprintf(msg_buffer, JSON_START JSON_STATUS "{\"" _STATUS "\":\"F\",\"When\":%lu,\"Code\":-1,\"Msg\":\"%d\",\"Description\":\"%s\"}" JSON_CLOSE,
+ (unsigned long)when, messageid, opt_api_description);
else
- sprintf(msg_buffer, _STATUS "=F,Code=-1,Msg=%d,Description=%s%c",
- messageid, opt_api_description, SEPARATOR);
+ sprintf(msg_buffer, _STATUS "=F,When=%lu,Code=-1,Msg=%d,Description=%s%c",
+ (unsigned long)when, messageid, opt_api_description, SEPARATOR);
return msg_buffer;
}
@@ -1668,6 +1670,9 @@ void api(int api_thr_id)
}
if (!SOCKETFAIL(n)) {
+ // the time of the request in now
+ when = time(NULL);
+
did = false;
if (*buf != ISJSON) {