You are given an existing C++ trading system with a client/server architecture. The current system already supports two request types:
-
AddOrder(order_id, symbol, side, price, quantity)
-
CancelOrder(order_id)
The server keeps all active orders in memory, keyed by order_id.
Add support for a new request:
-
ModifyOrder(order_id, new_price, new_quantity)
Requirements:
-
If the order does not exist or has already been canceled, the modification must be rejected.
-
symbol
and
side
cannot be changed by a modify request.
-
A successful modification updates only
price
and
quantity
for the existing order.
-
new_price
and
new_quantity
must both be positive; otherwise reject the request.
-
The order must remain associated with the same
order_id
after modification.
-
Integrate the new request into the existing client/server flow in the same style as the existing add/cancel functionality.
Implement the feature and explain what parts of the codebase you would inspect or reuse before making changes.