Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[roq-api] Drop-copy support #254

Closed
thraneh opened this issue Jul 25, 2022 · 8 comments
Closed

[roq-api] Drop-copy support #254

thraneh opened this issue Jul 25, 2022 · 8 comments

Comments

@thraneh
Copy link
Contributor

thraneh commented Jul 25, 2022

It should be possible to track all orders placed on an account.

  • Must be opt-in
  • Gateway should manage permissions
@thraneh thraneh added this to the Roadmap milestone Jul 25, 2022
@thraneh thraneh changed the title [roq-api] Drop-copy [roq-api] Drop-copy support Jul 26, 2022
@thraneh
Copy link
Contributor Author

thraneh commented Jul 26, 2022

As preparation, the user field has been added to the API for OrderUpdate and TradeUpdate.

Other changes are required before this is supported. Will await sponsorship.

@thraneh
Copy link
Contributor Author

thraneh commented Mar 2, 2023

A new drop_copy option has been added to client::Settings (default is false).

The implication of using true is that the client will no longer filter updates routed to other clients.

@thraneh thraneh modified the milestones: Roadmap, 0.9.3 Mar 2, 2023
@thraneh
Copy link
Contributor Author

thraneh commented Mar 2, 2023

Remaining topics:

  • Gateway TOML config must include an optional drop_copy flag per user. This will allow the gateway to reject connection attempts by unauthorized clients.
  • Gateway must send initial snapshot for all possibly users to a recently connected "drop-copy" client.
  • A "drop-copy" client will currently allow all messages through, including initial snapshots sent to recently connected clients. These snapshots should be filtered.
  • Ensure the user field of OrderUpdate and TradeUpdate are populated.

@thraneh
Copy link
Contributor Author

thraneh commented Mar 3, 2023

This

A "drop-copy" client will currently allow all messages through, including initial snapshots sent to recently connected clients. These snapshots should be filtered.

Has now been fixed. A drop-copy client will no longer receive the download messages meant for another client.

@thraneh
Copy link
Contributor Author

thraneh commented Mar 3, 2023

This

Ensure the user field of OrderUpdate and TradeUpdate are populated.

This logic previously depended on the implementation by each gateway.

It has now been pushed to the roq-server library to better provide generic gateway support.

The roq-server interface has been changed and now accepts an oms::TradeUpdate and the user field wil then automatically be populated by the roq-server library.

@thraneh
Copy link
Contributor Author

thraneh commented Mar 5, 2023

The previous change adding drop_copy to client::Settings was not ideal.

Reason is that the client settings are used as part of the subscription message which only can be sent after an initial handshake with the gateway. This is too for proper validation.

The client now has a flag --drop_copy which is required at the same level as the --name flag. Both flags are now transmitted to the gateway for the initial handshake.

For a brief period we will still support client::Settings::drop_copy before it will be reverted.

@thraneh
Copy link
Contributor Author

thraneh commented Mar 5, 2023

This

Gateway TOML config must include an optional drop_copy flag per user. This will allow the gateway to reject connection attempts by unauthorized clients.

Has now been added.

@thraneh
Copy link
Contributor Author

thraneh commented Mar 9, 2023

This

  • Gateway must send initial snapshot for all possibly users to a recently connected "drop-copy" client.

Has now been implemented.

@thraneh thraneh closed this as completed Mar 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

1 participant