' 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

actor Inbound
participant "Traffic\nServer" as TS
participant Outbound

Inbound <-[#green]> TS : //TCP Connect//
Inbound -[#blue]-> TS : <font color="blue">//initial data//</font>
note over TS : Examine initial data\nselect Outbound
TS <-[#green]> Outbound : //TCP Connect//
TS -[#blue]-> Outbound : <font color="blue">//initial data//</font>
note right : Duplicate of data from Inbound.
note over TS : Forward bytes between Inbound <&arrow-thick-left> <&arrow-thick-right> Outbound
Inbound <--> Outbound

@enduml
