added the PEER_ABORTED message

This commit is contained in:
hyung-hwan 2024-11-20 00:48:02 +09:00
parent de85c4c754
commit b981748b78
4 changed files with 35 additions and 17 deletions

View File

@ -197,14 +197,13 @@ func (r* ClientRoute) ConnectToPeer(pts_id uint32) {
if err != nil { if err != nil {
// TODO: make send peer started failure mesage? // TODO: make send peer started failure mesage?
fmt.Printf ("failed to connect to %s - %s\n", r.peer_addr.String(), err.Error()) fmt.Printf ("failed to connect to %s - %s\n", r.peer_addr.String(), err.Error())
return goto peer_aborted
} }
real_conn, ok = conn.(*net.TCPConn) real_conn, ok = conn.(*net.TCPConn)
if !ok { if !ok {
fmt.Printf("not tcp connection - %s\n", err.Error()) fmt.Printf("not tcp connection - %s\n", err.Error())
conn.Close() goto peer_aborted
return
} }
ptc, err = r.AddNewClientPeerConn(real_conn, pts_id) ptc, err = r.AddNewClientPeerConn(real_conn, pts_id)
@ -212,19 +211,27 @@ func (r* ClientRoute) ConnectToPeer(pts_id uint32) {
// TODO: logging // TODO: logging
// TODO: make send peer started failure mesage? // TODO: make send peer started failure mesage?
fmt.Printf("YYYYYYYY - %s\n", err.Error()) fmt.Printf("YYYYYYYY - %s\n", err.Error())
conn.Close() goto peer_aborted
return
} }
fmt.Printf("STARTED NEW SERVER PEER STAK\n") fmt.Printf("STARTED NEW SERVER PEER STAK\n")
err = r.cts.psc.Send(MakePeerStartedPacket(r.id, ptc.conn_id)) err = r.cts.psc.Send(MakePeerStartedPacket(r.id, ptc.conn_id))
if err != nil { if err != nil {
fmt.Printf("CLOSING NEW SERVER PEER STAK - %s\n", err.Error()) fmt.Printf("CLOSING NEW SERVER PEER STAK - %s\n", err.Error())
conn.Close() goto peer_aborted
return
} }
r.ptc_wg.Add(1) r.ptc_wg.Add(1)
go ptc.RunTask(&r.ptc_wg) go ptc.RunTask(&r.ptc_wg)
return
peer_aborted:
if conn != nil {
conn.Close()
err = r.cts.psc.Send(MakePeerAbortedPacket(r.id, ptc.conn_id))
if err != nil {
// TODO: logging
}
}
} }
func (r* ClientRoute) DisconnectFromPeer(pts_id uint32) error { func (r* ClientRoute) DisconnectFromPeer(pts_id uint32) error {
@ -268,6 +275,8 @@ func (r* ClientRoute) ReportEvent (pts_id uint32, event_type PACKET_KIND, event_
fmt.Printf ("GOT PEER STARTD . CONENCT TO CLIENT_SIDE PEER\n") fmt.Printf ("GOT PEER STARTD . CONENCT TO CLIENT_SIDE PEER\n")
r.ConnectToPeer(pts_id) r.ConnectToPeer(pts_id)
case PACKET_KIND_PEER_ABORTED:
fallthrough
case PACKET_KIND_PEER_STOPPED: case PACKET_KIND_PEER_STOPPED:
fmt.Printf ("GOT PEER STOPPED . DISCONNECTION FROM CLIENT_SIDE PEER\n") fmt.Printf ("GOT PEER STOPPED . DISCONNECTION FROM CLIENT_SIDE PEER\n")
err = r.DisconnectFromPeer(pts_id) err = r.DisconnectFromPeer(pts_id)

View File

@ -46,8 +46,9 @@ enum PACKET_KIND {
ROUTE_STOPPED = 5; ROUTE_STOPPED = 5;
PEER_STARTED = 6; PEER_STARTED = 6;
PEER_STOPPED = 7; PEER_STOPPED = 7;
PEER_EOF = 8; PEER_ABORTED = 8;
PEER_DATA = 9; PEER_EOF = 9;
PEER_DATA = 10;
}; };
message Packet { message Packet {

View File

@ -20,27 +20,33 @@ func MakeRouteStoppedPacket(route_id uint32, proto ROUTE_PROTO) *Packet {
} }
func MakePeerStartedPacket(route_id uint32, pts_id uint32) *Packet { func MakePeerStartedPacket(route_id uint32, peer_id uint32) *Packet {
// the connection from a peer to the server has been established // the connection from a peer to the server has been established
return &Packet{Kind: PACKET_KIND_PEER_STARTED, return &Packet{Kind: PACKET_KIND_PEER_STARTED,
U: &Packet_Peer{Peer: &PeerDesc{RouteId: route_id, PeerId: pts_id}}, U: &Packet_Peer{Peer: &PeerDesc{RouteId: route_id, PeerId: peer_id}},
} }
} }
func MakePeerStoppedPacket(route_id uint32, pts_id uint32) *Packet { func MakePeerStoppedPacket(route_id uint32, peer_id uint32) *Packet {
return &Packet{Kind: PACKET_KIND_PEER_STOPPED, return &Packet{Kind: PACKET_KIND_PEER_STOPPED,
U: &Packet_Peer{Peer: &PeerDesc{RouteId: route_id, PeerId: pts_id}, U: &Packet_Peer{Peer: &PeerDesc{RouteId: route_id, PeerId: peer_id},
}} }}
} }
func MakePeerEofPacket(route_id uint32, pts_id uint32) *Packet { func MakePeerAbortedPacket(route_id uint32, peer_id uint32) *Packet {
return &Packet{Kind: PACKET_KIND_PEER_ABORTED,
U: &Packet_Peer{Peer: &PeerDesc{RouteId: route_id, PeerId: peer_id},
}}
}
func MakePeerEofPacket(route_id uint32, peer_id uint32) *Packet {
return &Packet{Kind: PACKET_KIND_PEER_EOF, return &Packet{Kind: PACKET_KIND_PEER_EOF,
U: &Packet_Peer{Peer: &PeerDesc{RouteId: route_id, PeerId: pts_id}, U: &Packet_Peer{Peer: &PeerDesc{RouteId: route_id, PeerId: peer_id},
}} }}
} }
func MakePeerDataPacket(route_id uint32, pts_id uint32, data []byte) *Packet { func MakePeerDataPacket(route_id uint32, peer_id uint32, data []byte) *Packet {
return &Packet{Kind: PACKET_KIND_PEER_DATA, return &Packet{Kind: PACKET_KIND_PEER_DATA,
U: &Packet_Data{Data: &PeerData{RouteId: route_id, PeerId: pts_id, Data: data}, U: &Packet_Data{Data: &PeerData{RouteId: route_id, PeerId: peer_id, Data: data},
}} }}
} }

View File

@ -407,6 +407,8 @@ fmt.Printf ("grpd stream ended\n")
// TODO // TODO
} }
case PACKET_KIND_PEER_ABORTED:
fallthrough
case PACKET_KIND_PEER_STOPPED: case PACKET_KIND_PEER_STOPPED:
// the connection from the client to a peer has been established // the connection from the client to a peer has been established
var x *Packet_Peer var x *Packet_Peer