|
|
|
|
|
|
|
/******************************************************************************
|
|
|
|
* Copyright © 2014-2018 The SuperNET Developers. *
|
|
|
|
* *
|
|
|
|
* See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at *
|
|
|
|
* the top-level directory of this distribution for the individual copyright *
|
|
|
|
* holder information and the developer policies on copyright and licensing. *
|
|
|
|
* *
|
|
|
|
* Unless otherwise agreed in a custom licensing agreement, no part of the *
|
|
|
|
* SuperNET software, including this file may be copied, modified, propagated *
|
|
|
|
* or distributed except according to the terms contained in the LICENSE file *
|
|
|
|
* *
|
|
|
|
* Removal or modification of this copyright notice is prohibited. *
|
|
|
|
* *
|
|
|
|
******************************************************************************/
|
|
|
|
//
|
|
|
|
// LP_mpnet.c
|
|
|
|
// marketmaker
|
|
|
|
//
|
|
|
|
|
|
|
|
int32_t LP_tradecommand(void *ctx,char *myipaddr,int32_t pubsock,cJSON *argjson,uint8_t *data,int32_t datalen);
|
|
|
|
int32_t LP_quoteparse(struct LP_quoteinfo *qp,cJSON *argjson);
|
|
|
|
void LP_gtc_addorder(struct LP_quoteinfo *qp);
|
|
|
|
|
|
|
|
int32_t LP_mpnet_addorder(struct LP_quoteinfo *qp)
|
|
|
|
{
|
|
|
|
uint64_t destvalue,destvalue2;
|
|
|
|
if ( LP_iseligible(&destvalue,&destvalue2,0,qp->destcoin,qp->desttxid,qp->destvout,qp->destsatoshis,qp->feetxid,qp->feevout) > 0 )
|
|
|
|
{
|
|
|
|
LP_gtc_addorder(qp);
|
|
|
|
return(0);
|
|
|
|
}
|
|
|
|
return(-1);
|
|
|
|
}
|
|
|
|
|
|
|
|
void LP_mpnet_init()
|
|
|
|
{
|
|
|
|
char fname[1024],line[8192]; FILE *fp; struct LP_quoteinfo Q; cJSON *argjson;
|
|
|
|
sprintf(fname,"%s/GTC/orders",GLOBAL_DBDIR), OS_compatible_path(fname);
|
|
|
|
if ( (fp= fopen(fname,"rb+")) != 0 )
|
|
|
|
{
|
|
|
|
while ( fgets(line,sizeof(line),fp) > 0 )
|
|
|
|
{
|
|
|
|
if ( (argjson= cJSON_Parse(line)) != 0 )
|
|
|
|
{
|
|
|
|
if ( LP_quoteparse(&Q,argjson) == 0 )
|
|
|
|
{
|
|
|
|
if ( LP_mpnet_addorder(&Q) == 0 )
|
|
|
|
printf("GTC %s",line);
|
|
|
|
}
|
|
|
|
free_json(argjson);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fclose(fp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void LP_mpnet_send(int32_t localcopy,char *msg,int32_t sendflag)
|
|
|
|
{
|
|
|
|
char fname[1024]; FILE *fp;
|
|
|
|
if ( localcopy != 0 )
|
|
|
|
{
|
|
|
|
sprintf(fname,"%s/GTC/orders",GLOBAL_DBDIR), OS_compatible_path(fname);
|
|
|
|
if ( (fp= fopen(fname,"rb+")) == 0 )
|
|
|
|
fp = fopen(fname,"wb+");
|
|
|
|
else fseek(fp,0,SEEK_END);
|
|
|
|
fprintf(fp,"%s\n",msg);
|
|
|
|
fclose(fp);
|
|
|
|
}
|
|
|
|
if ( G.mpnet != 0 && sendflag != 0 )
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
cJSON *LP_mpnet_get()
|
|
|
|
{
|
|
|
|
return(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void LP_mpnet_check(void *ctx,char *myipaddr,int32_t pubsock)
|
|
|
|
{
|
|
|
|
cJSON *argjson;
|
|
|
|
while ( (argjson= LP_mpnet_get()) != 0 )
|
|
|
|
{
|
|
|
|
LP_tradecommand(ctx,myipaddr,pubsock,argjson,0,0);
|
|
|
|
free_json(argjson);
|
|
|
|
}
|
|
|
|
}
|