11package client
22
33import (
4- "context"
54 "fmt"
65 . "github.com/redhat-appstudio/jvm-build-service/pkg/domainproxy/common"
76 "net"
8- "sync/atomic"
97 "time"
108)
119
@@ -20,45 +18,40 @@ var logger = NewLogger("Domain Proxy Client")
2018var common = NewCommon (logger )
2119
2220type DomainProxyClient struct {
23- sharedParams SharedParams
24- httpPort int
25- httpConnectionCounter atomic.Uint64
26- listener net.Listener
27- shutdownContext context.Context
28- initiateShutdown context.CancelFunc
21+ sharedParams * SharedParams
22+ httpPort int
2923}
3024
3125func NewDomainProxyClient () * DomainProxyClient {
32- shutdownContext , initiateShutdown := context .WithCancel (context .Background ())
3326 return & DomainProxyClient {
34- sharedParams : common .NewSharedParams (),
35- httpPort : getHttpPort (),
36- shutdownContext : shutdownContext ,
37- initiateShutdown : initiateShutdown ,
27+ sharedParams : common .NewSharedParams (),
28+ httpPort : getHttpPort (),
3829 }
3930}
4031
4132func (dpc * DomainProxyClient ) Start (ready chan <- bool ) {
33+ sharedParams := dpc .sharedParams
4234 logger .Println ("Starting domain proxy client..." )
4335 var err error
44- dpc . listener , err = net .Listen (TCP , fmt .Sprintf ("%s:%d" , Localhost , dpc .httpPort ))
36+ sharedParams . Listener , err = net .Listen (TCP , fmt .Sprintf ("%s:%d" , Localhost , dpc .httpPort ))
4537 if err != nil {
4638 logger .Fatalf ("Failed to start HTTP server: %v" , err )
4739 }
4840 go dpc .startClient (ready )
4941}
5042
5143func (dpc * DomainProxyClient ) startClient (ready chan <- bool ) {
44+ sharedParams := dpc .sharedParams
5245 logger .Printf ("HTTP server listening on port %d" , dpc .httpPort )
5346 ready <- true
5447 for {
5548 select {
56- case <- dpc . shutdownContext .Done ():
49+ case <- sharedParams . RunningContext .Done ():
5750 return
5851 default :
59- if serverConnection , err := dpc . listener .Accept (); err != nil {
52+ if serverConnection , err := sharedParams . Listener .Accept (); err != nil {
6053 select {
61- case <- dpc . shutdownContext .Done ():
54+ case <- sharedParams . RunningContext .Done ():
6255 return
6356 default :
6457 logger .Printf ("Failed to accept server connection: %v" , err )
@@ -76,7 +69,7 @@ func (dpc *DomainProxyClient) handleConnectionRequest(serverConnection net.Conn)
7669 common .HandleSetDeadlineError (serverConnection , err )
7770 return
7871 }
79- connectionNo := dpc . httpConnectionCounter .Add (1 )
72+ connectionNo := sharedParams . HttpConnectionCounter .Add (1 )
8073 logger .Printf ("Handling %s Connection %d" , HttpToDomainSocket , connectionNo )
8174 startTime := time .Now ()
8275 domainConnection , err := net .DialTimeout (UNIX , sharedParams .DomainSocket , sharedParams .ConnectionTimeout )
@@ -94,17 +87,19 @@ func (dpc *DomainProxyClient) handleConnectionRequest(serverConnection net.Conn)
9487 }
9588 return
9689 }
90+ // Initiate transfer between server and domain
9791 go func () {
98- common .BiDirectionalTransfer (dpc . shutdownContext , serverConnection , domainConnection , sharedParams .ByteBufferSize , HttpToDomainSocket , connectionNo )
92+ common .BiDirectionalTransfer (sharedParams . RunningContext , serverConnection , domainConnection , sharedParams .ByteBufferSize , HttpToDomainSocket , connectionNo )
9993 logger .Printf ("%s Connection %d ended after %d ms" , HttpToDomainSocket , connectionNo , time .Since (startTime ).Milliseconds ())
10094 }()
10195}
10296
10397func (dpc * DomainProxyClient ) Stop () {
98+ sharedParams := dpc .sharedParams
10499 logger .Println ("Shutting down domain proxy client..." )
105- dpc . initiateShutdown ()
106- if dpc . listener != nil {
107- if err := dpc . listener .Close (); err != nil {
100+ sharedParams . InitiateShutdown ()
101+ if sharedParams . Listener != nil {
102+ if err := sharedParams . Listener .Close (); err != nil {
108103 common .HandleListenerCloseError (err )
109104 }
110105 }
0 commit comments