21
21
import com .navercorp .pinpoint .collector .receiver .DispatchHandler ;
22
22
import com .navercorp .pinpoint .collector .rpc .handler .AgentLifeCycleHandler ;
23
23
import com .navercorp .pinpoint .collector .service .AgentEventService ;
24
- import com .navercorp .pinpoint .common .server .util .AgentEventType ;
25
- import com .navercorp .pinpoint .common .server .util .AgentLifeCycleState ;
26
24
import com .navercorp .pinpoint .common .util .Assert ;
27
- import com .navercorp .pinpoint .rpc .PinpointSocket ;
28
- import com .navercorp .pinpoint .rpc .packet .HandshakePropertyType ;
29
- import com .navercorp .pinpoint .rpc .packet .HandshakeResponseCode ;
30
- import com .navercorp .pinpoint .rpc .packet .HandshakeResponseType ;
31
- import com .navercorp .pinpoint .rpc .packet .PingPayloadPacket ;
32
- import com .navercorp .pinpoint .rpc .packet .RequestPacket ;
33
- import com .navercorp .pinpoint .rpc .packet .SendPacket ;
34
- import com .navercorp .pinpoint .rpc .server .PinpointServer ;
35
25
import com .navercorp .pinpoint .rpc .server .PinpointServerAcceptor ;
36
- import com .navercorp .pinpoint .rpc .server .ServerMessageListener ;
37
26
import com .navercorp .pinpoint .rpc .server .handler .ServerStateChangeEventHandler ;
38
- import com .navercorp .pinpoint .rpc .util .MapUtils ;
39
27
import org .slf4j .Logger ;
40
28
import org .slf4j .LoggerFactory ;
41
29
44
32
import javax .annotation .Resource ;
45
33
import java .util .Collections ;
46
34
import java .util .List ;
47
- import java .util .Map ;
48
35
import java .util .Objects ;
49
36
import java .util .concurrent .Executor ;
50
37
@@ -111,42 +98,7 @@ public void start() {
111
98
112
99
// take care when attaching message handlers as events are generated from the IO thread.
113
100
// pass them to a separate queue and handle them in a different thread.
114
- acceptor .setMessageListener (new ServerMessageListener () {
115
-
116
- @ Override
117
- public HandshakeResponseCode handleHandshake (Map properties ) {
118
- if (properties == null ) {
119
- return HandshakeResponseType .ProtocolError .PROTOCOL_ERROR ;
120
- }
121
-
122
- boolean hasRequiredKeys = HandshakePropertyType .hasRequiredKeys (properties );
123
- if (!hasRequiredKeys ) {
124
- return HandshakeResponseType .PropertyError .PROPERTY_ERROR ;
125
- }
126
-
127
- boolean supportServer = MapUtils .getBoolean (properties , HandshakePropertyType .SUPPORT_SERVER .getName (), true );
128
- if (supportServer ) {
129
- return HandshakeResponseType .Success .DUPLEX_COMMUNICATION ;
130
- } else {
131
- return HandshakeResponseType .Success .SIMPLEX_COMMUNICATION ;
132
- }
133
- }
134
-
135
- @ Override
136
- public void handleSend (SendPacket sendPacket , PinpointSocket pinpointSocket ) {
137
- receive (sendPacket , pinpointSocket );
138
- }
139
-
140
- @ Override
141
- public void handleRequest (RequestPacket requestPacket , PinpointSocket pinpointSocket ) {
142
- requestResponse (requestPacket , pinpointSocket );
143
- }
144
-
145
- @ Override
146
- public void handlePing (PingPayloadPacket pingPacket , PinpointServer pinpointServer ) {
147
- recordPing (pingPacket , pinpointServer );
148
- }
149
- });
101
+ acceptor .setMessageListenerFactory (new AgentBaseDataReceiverServerMessageListenerFactory (executor , tcpPacketHandler , agentEventService , agentLifeCycleHandler ));
150
102
acceptor .bind (configuration .getBindIp (), configuration .getBindPort ());
151
103
152
104
if (logger .isInfoEnabled ()) {
@@ -164,37 +116,6 @@ private void prepare(PinpointServerAcceptor acceptor) {
164
116
}
165
117
}
166
118
167
- private void receive (SendPacket sendPacket , PinpointSocket pinpointSocket ) {
168
- executor .execute (new Runnable () {
169
- @ Override
170
- public void run () {
171
- tcpPacketHandler .handleSend (sendPacket , pinpointSocket );
172
- }
173
- });
174
- }
175
-
176
- private void requestResponse (RequestPacket requestPacket , PinpointSocket pinpointSocket ) {
177
- executor .execute (new Runnable () {
178
- @ Override
179
- public void run () {
180
- tcpPacketHandler .handleRequest (requestPacket , pinpointSocket );
181
- }
182
- });
183
- }
184
-
185
- private void recordPing (PingPayloadPacket pingPacket , PinpointServer pinpointServer ) {
186
- final int eventCounter = pingPacket .getPingId ();
187
- long pingTimestamp = System .currentTimeMillis ();
188
- try {
189
- if (!(eventCounter < 0 )) {
190
- agentLifeCycleHandler .handleLifeCycleEvent (pinpointServer , pingTimestamp , AgentLifeCycleState .RUNNING , eventCounter );
191
- }
192
- agentEventService .handleEvent (pinpointServer , pingTimestamp , AgentEventType .AGENT_PING );
193
- } catch (Exception e ) {
194
- logger .warn ("Error handling ping event" , e );
195
- }
196
- }
197
-
198
119
@ PreDestroy
199
120
public void stop () {
200
121
if (logger .isInfoEnabled ()) {
@@ -210,6 +131,4 @@ public void stop() {
210
131
}
211
132
}
212
133
213
-
214
-
215
134
}
0 commit comments