Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
110b0f4bce
  1. 4
      iguana/exchanges/bitcoin.c
  2. 2
      iguana/exchanges777.h
  3. 6
      iguana/iguana_exchanges.c
  4. 24
      iguana/iguana_instantdex.c

4
iguana/exchanges/bitcoin.c

@ -517,12 +517,12 @@ char *OPENORDERS(struct exchange_info *exchange,cJSON *argjson)
char *TRADEHISTORY(struct exchange_info *exchange,cJSON *argjson)
{
struct bitcoin_swapinfo *swap,*tmp; cJSON *retjson = cJSON_CreateArray();
portable_mutex_lock(&exchange->mutex);
portable_mutex_lock(&exchange->mutexH);
DL_FOREACH_SAFE(exchange->history,swap,tmp)
{
jaddi(retjson,instantdex_historyjson(swap));
}
portable_mutex_unlock(&exchange->mutex);
portable_mutex_unlock(&exchange->mutexH);
return(jprint(retjson,1));
}

2
iguana/exchanges777.h

@ -74,7 +74,7 @@ struct exchange_info
{
struct exchange_funcs issue;
char name[16],apikey[MAX_JSON_FIELD],apisecret[MAX_JSON_FIELD],tradepassword[MAX_JSON_FIELD],userid[MAX_JSON_FIELD];
uint32_t exchangeid,pollgap,lastpoll; portable_mutex_t mutex,mutexP,mutexR,mutexT;
uint32_t exchangeid,pollgap,lastpoll; portable_mutex_t mutex,mutexH,mutexS,mutexP,mutexR,mutexT;
uint64_t lastnonce,exchangebits; double commission;
void *privatedata;
struct tradebot_info *tradebots;

6
iguana/iguana_exchanges.c

@ -587,14 +587,14 @@ void iguana_statemachineupdate(struct supernet_info *myinfo,struct exchange_info
{
struct iguana_info *coin; struct bitcoin_swapinfo *swap,*tmp; struct iguana_bundlereq *req;
coin = iguana_coinfind("BTCD");
portable_mutex_lock(&exchange->mutex);
portable_mutex_lock(&exchange->mutexS);
DL_FOREACH_SAFE(exchange->statemachines,swap,tmp)
{
if ( swap->dead != 0 || swap->mine.dead != 0 || swap->other.dead != 0 )
DL_DELETE(exchange->statemachines,swap);
else instantdex_statemachine_iter(myinfo,exchange,swap);
}
portable_mutex_unlock(&exchange->mutex);
portable_mutex_unlock(&exchange->mutexS);
while ( (req= queue_dequeue(&exchange->recvQ,0)) != 0 )
{
if ( instantdex_recvquotes(coin,req,req->hashes,req->n) != 0 )
@ -915,6 +915,8 @@ struct exchange_info *exchange_create(char *exchangestr,cJSON *argjson)
}
exchange = calloc(1,sizeof(*exchange));
portable_mutex_init(&exchange->mutex);
portable_mutex_init(&exchange->mutexS);
portable_mutex_init(&exchange->mutexH);
portable_mutex_init(&exchange->mutexP);
portable_mutex_init(&exchange->mutexR);
portable_mutex_init(&exchange->mutexT);

24
iguana/iguana_instantdex.c

@ -713,31 +713,31 @@ cJSON *instantdex_historyjson(struct bitcoin_swapinfo *swap)
struct bitcoin_swapinfo *instantdex_historyfind(struct supernet_info *myinfo,struct exchange_info *exchange,uint64_t orderid)
{
struct bitcoin_swapinfo *swap,*tmp,*retswap = 0;
portable_mutex_lock(&exchange->mutex);
portable_mutex_lock(&exchange->mutexH);
DL_FOREACH_SAFE(exchange->history,swap,tmp)
{
if ( instantdex_orderidcmp(swap->mine.orderid,orderid,0) == 0 )
{
retswap = swap;
//break;
break;
}
}
portable_mutex_unlock(&exchange->mutex);
portable_mutex_unlock(&exchange->mutexH);
return(retswap);
}
void instantdex_historyadd(struct exchange_info *exchange,struct bitcoin_swapinfo *swap)
{
portable_mutex_lock(&exchange->mutex);
portable_mutex_lock(&exchange->mutexH);
DL_APPEND(exchange->history,swap);
portable_mutex_unlock(&exchange->mutex);
portable_mutex_unlock(&exchange->mutexH);
}
struct bitcoin_swapinfo *instantdex_statemachinefind(struct supernet_info *myinfo,struct exchange_info *exchange,uint64_t orderid)
{
struct bitcoin_swapinfo *tmp,*swap,*retswap = 0; uint32_t now;
now = (uint32_t)time(NULL);
portable_mutex_lock(&exchange->mutex);
portable_mutex_lock(&exchange->mutexS);
DL_FOREACH_SAFE(exchange->statemachines,swap,tmp)
{
//printf("%p search for orderid.%llx in (%llx/%llx) %u %u\n",exchange->statemachines,(long long)orderid,(long long)swap->mine.orderid,(long long)swap->other.orderid,swap->mine.dead,swap->other.dead);
@ -746,7 +746,7 @@ struct bitcoin_swapinfo *instantdex_statemachinefind(struct supernet_info *myinf
if ( instantdex_orderidcmp(swap->mine.orderid,orderid,0) == 0 || instantdex_orderidcmp(swap->other.orderid,orderid,0) == 0 )
{
retswap = swap;
//break;
break;
}
}
else
@ -758,7 +758,7 @@ struct bitcoin_swapinfo *instantdex_statemachinefind(struct supernet_info *myinf
}
}
//printf("found statemachine.%p\n",retswap);
portable_mutex_unlock(&exchange->mutex);
portable_mutex_unlock(&exchange->mutexS);
return(retswap);
}
@ -809,13 +809,9 @@ struct instantdex_accept *instantdex_offerfind(struct supernet_info *ignore,stru
void instantdex_statemachineadd(struct exchange_info *exchange,struct bitcoin_swapinfo *swap)
{
portable_mutex_lock(&exchange->mutex);
portable_mutex_lock(&exchange->mutexS);
DL_APPEND(exchange->statemachines,swap);
portable_mutex_unlock(&exchange->mutex);
if ( instantdex_statemachinefind(0,exchange,swap->mine.orderid) == 0 && instantdex_statemachinefind(0,exchange,swap->other.orderid) == 0 )
{
printf("cant find just added FSM.(%llx/%llx)\n",(long long)swap->mine.orderid,(long long)swap->other.orderid);
} else printf("added FSM.(%llx/%llx)\n",(long long)swap->mine.orderid,(long long)swap->other.orderid);
portable_mutex_unlock(&exchange->mutexS);
}
void instantdex_offeradd(struct exchange_info *exchange,struct instantdex_accept *ap)

Loading…
Cancel
Save