Skip to content

Commit c958e86

Browse files
authored
feat: added new grpc method to easily cancel all orders (#1910)
Signed-off-by: rsercano <[email protected]>
1 parent 553440f commit c958e86

14 files changed

+987
-268
lines changed

Diff for: docs/api.md

+29
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: lib/cli/commands/removeallorders.ts

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { Arguments, Argv } from 'yargs';
2+
import { RemoveAllOrdersRequest, RemoveAllOrdersResponse } from '../../proto/xudrpc_pb';
3+
import { callback, loadXudClient } from '../command';
4+
5+
export const command = 'removeallorders';
6+
7+
export const describe = 'removes all orders';
8+
9+
export const builder = (argv: Argv) => argv
10+
.example('$0 removeallorders', describe);
11+
12+
const formatOutput = (response: RemoveAllOrdersResponse.AsObject) => {
13+
if (response.removedOrderIdsList.length <= 0 && response.onHoldOrderIdsList.length <= 0) {
14+
console.log('No orders found');
15+
return;
16+
}
17+
18+
if (response.removedOrderIdsList.length) {
19+
response.removedOrderIdsList.forEach((removedOrder => console.log(`Removed order with id ${removedOrder}`)));
20+
}
21+
if (response.onHoldOrderIdsList.length) {
22+
response.onHoldOrderIdsList.forEach((id => console.log(`Order with id ${id} has a hold for a pending swap and will be removed afterwards`)));
23+
}
24+
25+
};
26+
27+
export const handler = async (argv: Arguments<any>) => {
28+
(await loadXudClient(argv)).removeAllOrders(new RemoveAllOrdersRequest(), callback(argv, formatOutput));
29+
};

Diff for: lib/grpc/GrpcService.ts

+20
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,26 @@ class GrpcService {
288288
}
289289
}
290290

291+
/**
292+
* See [[Service.removeAllOrders]]
293+
*/
294+
public removeAllOrders: grpc.handleUnaryCall<xudrpc.RemoveAllOrdersRequest, xudrpc.RemoveAllOrdersResponse> = async (_, callback) => {
295+
if (!this.isReady(this.service, callback)) {
296+
return;
297+
}
298+
try {
299+
const { removedOrderLocalIds, onHoldOrderLocalIds } = await this.service.removeAllOrders();
300+
301+
const response = new xudrpc.RemoveAllOrdersResponse();
302+
response.setRemovedOrderIdsList(removedOrderLocalIds);
303+
response.setOnHoldOrderIdsList(onHoldOrderLocalIds);
304+
305+
callback(null, response);
306+
} catch (err) {
307+
callback(getGrpcError(err), null);
308+
}
309+
}
310+
291311
/**
292312
* See [[Service.getBalance]]
293313
*/

Diff for: lib/orderbook/OrderBook.ts

+16
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,22 @@ class OrderBook extends EventEmitter {
841841
return order;
842842
}
843843

844+
public removeOwnOrders = () => {
845+
const removedOrderLocalIds = [];
846+
const onHoldOrderLocalIds = [];
847+
848+
for (const localId of this.localIdMap.keys()) {
849+
const onHoldIndicator = this.removeOwnOrderByLocalId(localId, true);
850+
if (onHoldIndicator === 0) {
851+
removedOrderLocalIds.push(localId);
852+
} else {
853+
onHoldOrderLocalIds.push(localId);
854+
}
855+
}
856+
857+
return { removedOrderLocalIds, onHoldOrderLocalIds };
858+
}
859+
844860
/**
845861
* Removes all or part of an order from the order book by its local id. Throws an error if the
846862
* specified pairId is not supported or if the order to cancel could not be found.

Diff for: lib/proto/annotations_grpc_pb.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: lib/proto/xudp2p_grpc_pb.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: lib/proto/xudrpc.swagger.json

+49
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: lib/proto/xudrpc_grpc_pb.d.ts

+17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: lib/proto/xudrpc_grpc_pb.js

+37
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: lib/proto/xudrpc_pb.d.ts

+46
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)