blob: a48483715ea97d391d226fbcdc2ecf2c35ddfdd0 [file] [log] [blame]
' 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