Browse Source

Merge commit 'fd1bd9e' into cg_merges_20121214

Conflicts:
	util.c
Luke Dashjr 13 years ago
parent
commit
3d44c01692
4 changed files with 34 additions and 1 deletions
  1. 5 1
      API-README
  2. 4 0
      api.c
  3. 4 0
      miner.h
  4. 21 0
      util.c

+ 5 - 1
API-README

@@ -392,6 +392,9 @@ Enforced output limitation:
   however, JSON brackets will be correctly closed and the JSON id will be
   set to 0 (instead of 1) if any data was truncated
 
+Modified API commands:
+ 'stats' - add 'Times Sent', 'Bytes Sent', 'Times Recv', 'Bytes Recv'
+
 ----------
 
 API V1.21 (BFGMiner v2.10.0)
@@ -735,7 +738,8 @@ On Fedora 17:
  systemctl enable httpd.service --system
 
 On windows there are a few options.
-Try one of these (I've never used either one)
+Try one of these (apparently the first one is easiest - thanks jborkl)
+ http://www.easyphp.org/
  http://www.apachefriends.org/en/xampp.html
  http://www.wampserver.com/en/
 

+ 4 - 0
api.c

@@ -2742,6 +2742,10 @@ static int itemstats(struct io_data *io_data, int i, char *id, struct cgminer_st
 		root = api_add_diff(root, "Max Diff", &(pool_stats->max_diff), false);
 		root = api_add_uint32(root, "Min Diff Count", &(pool_stats->min_diff_count), false);
 		root = api_add_uint32(root, "Max Diff Count", &(pool_stats->max_diff_count), false);
+		root = api_add_uint64(root, "Times Sent", &(pool_stats->times_sent), false);
+		root = api_add_uint64(root, "Bytes Sent", &(pool_stats->bytes_sent), false);
+		root = api_add_uint64(root, "Times Recv", &(pool_stats->times_received), false);
+		root = api_add_uint64(root, "Bytes Recv", &(pool_stats->bytes_received), false);
 	}
 
 	if (extra)

+ 4 - 0
miner.h

@@ -395,6 +395,10 @@ struct cgminer_pool_stats {
 	double last_diff;
 	uint32_t min_diff_count;
 	uint32_t max_diff_count;
+	uint64_t times_sent;
+	uint64_t bytes_sent;
+	uint64_t times_received;
+	uint64_t bytes_received;
 };
 
 struct cgpu_info {

+ 21 - 0
util.c

@@ -433,6 +433,7 @@ json_t *json_rpc_call_completed(CURL *curl, int rc, bool probe, int *rolltime, v
 		*(void**)out_priv = state->priv;
 
 	json_t *val, *err_val, *res_val;
+	double byte_count;
 	json_error_t err;
 	struct pool *pool = state->pool;
 	bool probing = probe && !pool->probed;
@@ -447,6 +448,13 @@ json_t *json_rpc_call_completed(CURL *curl, int rc, bool probe, int *rolltime, v
 		goto err_out;
 	}
 
+	pool->cgminer_pool_stats.times_sent++;
+	if (curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD, &byte_count) == CURLE_OK)
+		pool->cgminer_pool_stats.bytes_sent += byte_count;
+	pool->cgminer_pool_stats.times_received++;
+	if (curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &byte_count) == CURLE_OK)
+		pool->cgminer_pool_stats.bytes_received += byte_count;
+
 	if (probing) {
 		pool->probed = true;
 		/* If X-Long-Polling was found, activate long polling */
@@ -950,6 +958,8 @@ static bool __stratum_send(struct pool *pool, char *s, ssize_t len)
 		len -= ssent;
 	}
 
+	pool->cgminer_pool_stats.times_sent++;
+	pool->cgminer_pool_stats.bytes_sent += ssent;
 	return true;
 }
 
@@ -1043,6 +1053,9 @@ char *recv_line(struct pool *pool)
 	sret = realloc(pool->readbuf.buf, len + 1);
 	pool->readbuf.buf = tok;
 
+	pool->cgminer_pool_stats.times_received++;
+	pool->cgminer_pool_stats.bytes_received += len;
+
 out:
 	if (!sret)
 		clear_sock(pool);
@@ -1374,6 +1387,7 @@ bool initiate_stratum(struct pool *pool)
 	char curl_err_str[CURL_ERROR_SIZE];
 	char s[RBUFSIZE], *sret = NULL;
 	CURL *curl = NULL;
+	double byte_count;
 	json_error_t err;
 	bool ret = false;
 
@@ -1413,6 +1427,13 @@ bool initiate_stratum(struct pool *pool)
 	curl_easy_getinfo(curl, CURLINFO_LASTSOCKET, (long *)&pool->sock);
 	keep_sockalive(pool->sock);
 
+	pool->cgminer_pool_stats.times_sent++;
+	if (curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD, &byte_count) == CURLE_OK)
+		pool->cgminer_pool_stats.bytes_sent += byte_count;
+	pool->cgminer_pool_stats.times_received++;
+	if (curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &byte_count) == CURLE_OK)
+		pool->cgminer_pool_stats.bytes_received += byte_count;
+
 	sprintf(s, "{\"id\": %d, \"method\": \"mining.subscribe\", \"params\": []}", swork_id++);
 
 	if (!__stratum_send(pool, s, strlen(s))) {