Browse Source

Store which sdata each client is bound to

master
Con Kolivas 10 years ago
parent
commit
b1f92414c5
  1. 11
      src/stratifier.c

11
src/stratifier.c

@ -214,6 +214,8 @@ struct worker_instance {
bool notified_idle; bool notified_idle;
}; };
typedef struct stratifier_data sdata_t;
/* Per client stratum instance == workers */ /* Per client stratum instance == workers */
struct stratum_instance { struct stratum_instance {
UT_hash_handle hh; UT_hash_handle hh;
@ -275,6 +277,7 @@ struct stratum_instance {
int64_t suggest_diff; /* Stratum client suggested diff */ int64_t suggest_diff; /* Stratum client suggested diff */
double best_diff; /* Best share found by this instance */ double best_diff; /* Best share found by this instance */
sdata_t *sdata; /* Which sdata this client is bound to */
int proxyid; /* Which proxy this is bound to in proxy mode */ int proxyid; /* Which proxy this is bound to in proxy mode */
int subproxyid; /* Which subproxy */ int subproxyid; /* Which subproxy */
}; };
@ -297,8 +300,6 @@ typedef union {
typedef struct proxy_base proxy_t; typedef struct proxy_base proxy_t;
typedef struct stratifier_data sdata_t;
struct proxy_base { struct proxy_base {
UT_hash_handle hh; UT_hash_handle hh;
int id; int id;
@ -1456,7 +1457,8 @@ static void _dec_instance_ref(sdata_t *sdata, stratum_instance_t *client, const
#define dec_instance_ref(sdata, instance) _dec_instance_ref(sdata, instance, __FILE__, __func__, __LINE__) #define dec_instance_ref(sdata, instance) _dec_instance_ref(sdata, instance, __FILE__, __func__, __LINE__)
/* Enter with write instance_lock held */ /* Enter with write instance_lock held */
static stratum_instance_t *__stratum_add_instance(ckpool_t *ckp, const int64_t id, const int server) static stratum_instance_t *__stratum_add_instance(ckpool_t *ckp, const int64_t id,
const int server)
{ {
stratum_instance_t *client = ckzalloc(sizeof(stratum_instance_t)); stratum_instance_t *client = ckzalloc(sizeof(stratum_instance_t));
sdata_t *sdata = ckp->data; sdata_t *sdata = ckp->data;
@ -1468,6 +1470,9 @@ static stratum_instance_t *__stratum_add_instance(ckpool_t *ckp, const int64_t i
client->ckp = ckp; client->ckp = ckp;
tv_time(&client->ldc); tv_time(&client->ldc);
HASH_ADD_I64(sdata->stratum_instances, id, client); HASH_ADD_I64(sdata->stratum_instances, id, client);
/* Points to ckp sdata in ckpool mode, but is changed later in proxy
* mode . */
client->sdata = sdata;
return client; return client;
} }

Loading…
Cancel
Save