Contract hpargs revamp. (#217)

This commit is contained in:
Chalith Desaman
2021-01-11 14:28:01 +05:30
committed by GitHub
parent 11cb57e9ee
commit 99c768360e
4 changed files with 22 additions and 23 deletions

View File

@@ -436,7 +436,7 @@ void __hp_parse_args_json(const struct json_object_s *object)
{
__HP_ASSIGN_STRING(cctx->pubkey, elem);
}
else if (strcmp(k->string, "ts") == 0)
else if (strcmp(k->string, "timestamp") == 0)
{
__HP_ASSIGN_UINT64(cctx->timestamp, elem);
}
@@ -448,7 +448,7 @@ void __hp_parse_args_json(const struct json_object_s *object)
{
__HP_ASSIGN_STRING(cctx->lcl, elem);
}
else if (strcmp(k->string, "userinfd") == 0)
else if (strcmp(k->string, "user_in_fd") == 0)
{
__HP_ASSIGN_INT(cctx->users.in_fd, elem);
}
@@ -501,7 +501,7 @@ void __hp_parse_args_json(const struct json_object_s *object)
}
}
}
else if (strcmp(k->string, "nplfd") == 0)
else if (strcmp(k->string, "npl_fd") == 0)
{
__HP_ASSIGN_INT(cctx->unl.npl_fd, elem);
}
@@ -526,7 +526,7 @@ void __hp_parse_args_json(const struct json_object_s *object)
}
}
}
else if (strcmp(k->string, "controlfd") == 0)
else if (strcmp(k->string, "control_fd") == 0)
{
__HP_ASSIGN_INT(__hpc.control_fd, elem);
}

View File

@@ -48,9 +48,6 @@ const echoContract = async (ctx) => {
// })
// await ctx.unl.send("Hello");
// }
// Update UNL example:
// ctx.updateUnl(["<add pubkey hex>"], ["<remove pubkey hex>"]);
}
const hpc = new HotPocket.Contract();

View File

@@ -37,7 +37,7 @@ class HotPocketContract {
const argsJson = fs.readFileSync(process.stdin.fd, 'utf8');
const hpargs = JSON.parse(argsJson);
this.#controlChannel = new ControlChannel(hpargs.controlfd);
this.#controlChannel = new ControlChannel(hpargs.control_fd);
this.#executeContract(hpargs, contractFunc);
return true;
}
@@ -45,11 +45,11 @@ class HotPocketContract {
#executeContract = (hpargs, contractFunc) => {
// Keeps track of all the tasks (promises) that must be awaited before the termination.
const pendingTasks = [];
const nplChannel = new NplChannel(hpargs.nplfd);
const nplChannel = new NplChannel(hpargs.npl_fd);
const users = new UsersCollection(hpargs.userinfd, hpargs.users, this.#clientProtocol);
const users = new UsersCollection(hpargs.user_in_fd, hpargs.users, this.#clientProtocol);
const unl = new UnlCollection(hpargs.readonly, hpargs.unl, nplChannel, pendingTasks);
const executionContext = new ContractExecutionContext(hpargs, users, unl, this.#controlChannel);
const executionContext = new ContractContext(hpargs, users, unl, this.#controlChannel);
invokeCallback(contractFunc, executionContext).catch(errHandler).finally(() => {
// Wait for any pending tasks added during execution.
@@ -182,7 +182,7 @@ class PatchConfig {
}
}
class ContractExecutionContext {
class ContractContext {
#controlChannel = null;
#patchConfig = null;
@@ -190,7 +190,7 @@ class ContractExecutionContext {
constructor(hpargs, users, unl, controlChannel) {
this.#controlChannel = controlChannel;
this.readonly = hpargs.readonly;
this.timestamp = hpargs.ts;
this.timestamp = hpargs.timestamp;
this.users = users;
this.unl = unl; // Not available in readonly mode.
this.lcl = hpargs.lcl; // Not available in readonly mode.

View File

@@ -208,14 +208,15 @@ namespace sc
* Writes the contract args (JSON) into the stdin of the contract process.
* Args format:
* {
* "version":"<hp version>",
* "hp_version":"<hp version>",
* "contract_id": "<contract guid>",
* "pubkey": "<this node's hex public key>",
* "ts": <this node's timestamp (unix milliseconds)>,
* "timestamp": <this node's timestamp (unix milliseconds)>,
* "readonly": <true|false>,
* "lcl": "<this node's last closed ledger seq no. and hash in hex>", (eg: 169-a1d82eb4c9ed005ec2c4f4f82b6f0c2fd7543d66b1a0f6b8e58ae670b3e2bcfb)
* "controlfd": fd,
* "nplfd":fd,
* "userinfd":fd, // User inputs fd.
* "control_fd": fd,
* "npl_fd":fd,
* "user_in_fd":fd, // User inputs fd.
* "users":{ "<pkhex>":[outfd, [msg1_off, msg1_len], ...], ... },
* "unl":[ "<pkhex>", ... ]
* }
@@ -227,20 +228,21 @@ namespace sc
// json string manually.
std::ostringstream os;
os << "{\"version\":\"" << util::HP_VERSION
os << "{\"hp_version\":\"" << util::HP_VERSION
<< "\",\"contract_id\":\"" << conf::cfg.contract.id
<< "\",\"pubkey\":\"" << conf::cfg.node.public_key_hex
<< "\",\"ts\":" << ctx.args.time
<< "\",\"timestamp\":" << ctx.args.time
<< ",\"readonly\":" << (ctx.args.readonly ? "true" : "false");
if (!ctx.args.readonly)
{
os << ",\"lcl\":\"" << ctx.args.lcl
<< "\",\"nplfd\":" << ctx.nplfds.scfd;
<< "\",\"npl_fd\":" << ctx.nplfds.scfd;
}
os << ",\"controlfd\":" << ctx.controlfds.scfd;
os << ",\"control_fd\":" << ctx.controlfds.scfd;
os << ",\"userinfd\":" << user_inputs_fd
os << ",\"user_in_fd\":" << user_inputs_fd
<< ",\"users\":{";
user_json_to_stream(ctx.userfds, ctx.args.userbufs, os);