Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
771 blopes 1
@startuml
2
 
3
' Licensed to the Apache Software Foundation (ASF) under one or more
4
' contributor license agreements.  See the NOTICE file distributed with
5
' this work for additional information regarding copyright ownership.
6
' The ASF licenses this file to You under the Apache License, Version 2.0
7
' (the "License"); you may not use this file except in compliance with
8
' the License.  You may obtain a copy of the License at
9
'
10
'     http://www.apache.org/licenses/LICENSE-2.0
11
'
12
' Unless required by applicable law or agreed to in writing, software
13
' distributed under the License is distributed on an "AS IS" BASIS,
14
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
' See the License for the specific language governing permissions and
16
' limitations under the License.
17
 
18
hide footbox
19
skinparam style strictuml
20
 
21
activate Acceptor
22
participant NioEndpoint
23
participant ServerSocket
24
participant SocketChannel
25
activate Poller
26
participant Selector
27
participant Executor
28
activate Worker
29
 
30
group Acceptor Loop
31
Acceptor -> NioEndpoint ++: serverSocketAccept()
32
NioEndpoint -> ServerSocket ++: accept()
33
note right of ServerSocket
34
  This is where Tomcat
35
  waits for incoming
36
  connections
37
end note
38
ServerSocket -->> SocketChannel **:
39
return
40
return
41
 
42
Acceptor -> NioEndpoint ++: setSocketOptions()
43
NioEndpoint -> Poller ++: register()
44
return
45
return
46
end
47
 
48
group Poller Loop (simplified)
49
Poller -> Poller ++: events()
50
Poller -> SocketChannel ++: register(OP_READ)
51
return
52
return
53
 
54
Poller -> Selector ++: select()
55
return
56
 
57
Poller -> Poller ++: processKey()
58
Poller -> NioEndpoint ++: processSocket()
59
NioEndpoint -> NioEndpoint ++: createSocketProcessor()
60
NioEndpoint -->> SocketProcessor **:
61
NioEndpoint -> Executor ++: execute()
62
Executor -> Worker ++: run()
63
return
64
return
65
return
66
return
67
return
68
end
69
 
70
Worker -> SocketProcessor ++: run()
71
SocketProcessor -> SocketChannel ++: handshake()
72
note right of SocketChannel
73
  TLS handshake
74
end note
75
return
76
SocketProcessor -> ConnectionHandler ++: process()
77
ConnectionHandler -> Protocol ++: createProcessor()
78
Protocol -->> Processor **:
79
activate Processor
80
Processor -->> CoyoteRequest **:
81
Processor -->> CoyoteResponse **:
82
return
83
return
84
ConnectionHandler -> Processor ++: process()
85
Processor -> Processor ++: service()
86
note right of Processor
87
  More detail of this
88
  processing in the
89
  protocol specific
90
  diagrams
91
end note
92
return
93
return
94
return
95
return
96
 
97
@enduml