| ' Licensed under the Apache License, Version 2.0 (the "License"); |
| ' you may not use this file except in compliance with the License. |
| ' You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 |
| ' Unless required by applicable law or agreed to in writing, software distributed under the License is distributed |
| ' on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ' See the License for the specific language governing permissions and limitations under the License. |
| @startuml |
| class traffic_ctl { |
| |
| command :std::shared_ptr<CtrlCommand> |
| parser: ArgParser |
| } |
| note left: ArgParser Invoker |
| class CtrlCommand { |
| virtual void execute() |
| _printer: std::unique_ptr<BasePrinter> |
| } |
| |
| class DirectRPCCommand { |
| void execute() |
| } |
| class RecordCommand { |
| void execute() |
| } |
| class XCommand { |
| void execute() |
| } |
| |
| |
| traffic_ctl -|> CtrlCommand |
| CtrlCommand <|-- RecordCommand |
| CtrlCommand <|-- DirectRPCCommand |
| CtrlCommand <|-- XCommand |
| |
| abstract BasePrinter { |
| void write_output(JSONRPCResponse) |
| virtual void write_output(std::string_view) |
| } |
| CtrlCommand *-- BasePrinter |
| |
| class XPrinter{ |
| void write_output(JSONRPCResponse) |
| } |
| class DiffConfigPrinter{ |
| void write_output(JSONRPCResponse) |
| } |
| |
| class RecordPrinter{ |
| void write_output(JSONRPCResponse) |
| } |
| |
| BasePrinter <|-- DiffConfigPrinter |
| BasePrinter <|-- RecordPrinter |
| BasePrinter <|-- XPrinter |
| @enduml |