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

Consider allowing branches in the graph to rejoin other branches in the graph #7

Open
RoganDawes opened this issue May 15, 2019 · 1 comment

Comments

@RoganDawes
Copy link
Collaborator

This may allow for more understandable/configurable graphs when protocols change for whatever reason.

For example, we may have a graph that implements an HTTP pipeline, but we also support WebSockets. When the WebSockets upgrade happens, the graph needs to change quite dramatically, removing all of the HTTP protocol decoders/encoders, etc. This is currently done programmatically, but it means that the new graph is no longer shown in the visual representation.

If we allowed branches to rejoin an existing connection, it would allow us to include new Protocol Decoders, ScriptHandler's, etc on the upgrade branch.

The problem with this from a conceptual perspective is that ideally we want the WebSocketUpgradeHandler to branch from the graph BEFORE the HTTP decoders/encoders on the server side, and rejoin the branch below the decoders on the client side, so that we can simply remove all handlers between where the branches diverge and rejoin. However, the WebSocketUpgradeHandler also wants to work with decoded HTTP request and response objects, not raw bytes, which means it needs to be placed AFTER the decoders/encoders have done their work.

Currently the upgrade handlers just walk the pipelines backwards looking for the http codecs and object aggregators, and this may just have to continue.
Screenshot from 2019-05-15 09-13-11

@RoganDawes
Copy link
Collaborator Author

This could be achieved by making branch/decision nodes more "GraphAware", but also differentiating between connections created in Inbound vs Outbound directions, so that the GraphAware nodes know in which direction to retrieve more nodes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant