@digitalasset/daml-ledger
Version:
DAML Ledger API Node.js bindings
45 lines • 2.73 kB
JavaScript
;
// Copyright (c) 2021 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeJsCommandCompletionClient = void 0;
const command_completion_service_pb_1 = require("../generated/com/daml/ledger/api/v1/command_completion_service_pb");
const ClientReadableObjectStream_1 = require("../call/ClientReadableObjectStream");
const CompletionStreamRequestValidation_1 = require("../validation/CompletionStreamRequestValidation");
const Callback_1 = require("../util/Callback");
const ClientCancellableCall_1 = require("../call/ClientCancellableCall");
const CompletionEndResponseCodec_1 = require("../codec/CompletionEndResponseCodec");
const CompletionStreamResponseCodec_1 = require("../codec/CompletionStreamResponseCodec");
const Validation_1 = require("../validation/Validation");
const CompletionStreamRequestCodec_1 = require("../codec/CompletionStreamRequestCodec");
class NodeJsCommandCompletionClient {
constructor(ledgerId, client, reporter) {
this.completionEndPromise = Callback_1.promisify(this.completionEndCallback);
this.completionEndRequest = new command_completion_service_pb_1.CompletionEndRequest();
this.completionEndRequest.setLedgerId(ledgerId);
this.ledgerId = ledgerId;
this.client = client;
this.reporter = reporter;
}
completionStream(requestObject) {
const tree = CompletionStreamRequestValidation_1.CompletionStreamRequestValidation.validate(requestObject);
if (Validation_1.isValid(tree)) {
const request = CompletionStreamRequestCodec_1.CompletionStreamRequestCodec.serialize(requestObject);
request.setLedgerId(this.ledgerId);
return ClientReadableObjectStream_1.ClientReadableObjectStream.from(this.client.completionStream(request), CompletionStreamResponseCodec_1.CompletionStreamResponseCodec);
}
else {
return ClientReadableObjectStream_1.ClientReadableObjectStream.from(new Error(this.reporter.render(tree)));
}
}
completionEndCallback(callback) {
return ClientCancellableCall_1.ClientCancellableCall.accept(this.client.completionEnd(this.completionEndRequest, (error, response) => {
Callback_1.forward(callback, error, response, CompletionEndResponseCodec_1.CompletionEndResponseCodec.deserialize);
}));
}
completionEnd(callback) {
return callback ? this.completionEndCallback(callback) : this.completionEndPromise();
}
}
exports.NodeJsCommandCompletionClient = NodeJsCommandCompletionClient;
//# sourceMappingURL=NodeJsCommandCompletionClient.js.map