Graceful disconnect
This commit is contained in:
parent
b73d8de851
commit
b44cdab611
@ -1,6 +1,6 @@
|
|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.36.2
|
// protoc-gen-go v1.36.3
|
||||||
// protoc v5.29.2
|
// protoc v5.29.2
|
||||||
// source: actions.proto
|
// source: actions.proto
|
||||||
|
|
||||||
@ -25,6 +25,7 @@ type Action_ActionType int32
|
|||||||
const (
|
const (
|
||||||
Action_MOVE Action_ActionType = 0
|
Action_MOVE Action_ActionType = 0
|
||||||
Action_CHAT Action_ActionType = 1
|
Action_CHAT Action_ActionType = 1
|
||||||
|
Action_DISCONNECT Action_ActionType = 2
|
||||||
)
|
)
|
||||||
|
|
||||||
// Enum value maps for Action_ActionType.
|
// Enum value maps for Action_ActionType.
|
||||||
@ -32,10 +33,12 @@ var (
|
|||||||
Action_ActionType_name = map[int32]string{
|
Action_ActionType_name = map[int32]string{
|
||||||
0: "MOVE",
|
0: "MOVE",
|
||||||
1: "CHAT",
|
1: "CHAT",
|
||||||
|
2: "DISCONNECT",
|
||||||
}
|
}
|
||||||
Action_ActionType_value = map[string]int32{
|
Action_ActionType_value = map[string]int32{
|
||||||
"MOVE": 0,
|
"MOVE": 0,
|
||||||
"CHAT": 1,
|
"CHAT": 1,
|
||||||
|
"DISCONNECT": 2,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -394,7 +397,7 @@ var File_actions_proto protoreflect.FileDescriptor
|
|||||||
|
|
||||||
var file_actions_proto_rawDesc = []byte{
|
var file_actions_proto_rawDesc = []byte{
|
||||||
0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
|
0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
|
||||||
0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74,
|
0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x06, 0x41, 0x63, 0x74,
|
||||||
0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
|
0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||||
0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69,
|
0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69,
|
||||||
0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
|
0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
|
||||||
@ -404,9 +407,10 @@ var file_actions_proto_rawDesc = []byte{
|
|||||||
0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c,
|
0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c,
|
||||||
0x63, 0x68, 0x61, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01,
|
0x63, 0x68, 0x61, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01,
|
||||||
0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22,
|
0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22,
|
||||||
0x20, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a,
|
0x30, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a,
|
||||||
0x04, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x48, 0x41, 0x54, 0x10,
|
0x04, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x48, 0x41, 0x54, 0x10,
|
||||||
0x01, 0x22, 0x69, 0x0a, 0x0b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x74, 0x63, 0x68,
|
0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10,
|
||||||
|
0x02, 0x22, 0x69, 0x0a, 0x0b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x74, 0x63, 0x68,
|
||||||
0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
|
0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a,
|
0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a,
|
||||||
0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f,
|
0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f,
|
||||||
|
@ -8,6 +8,7 @@ message Action {
|
|||||||
enum ActionType {
|
enum ActionType {
|
||||||
MOVE = 0;
|
MOVE = 0;
|
||||||
CHAT = 1;
|
CHAT = 1;
|
||||||
|
DISCONNECT = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
ActionType type = 1;
|
ActionType type = 1;
|
||||||
|
9
main.go
9
main.go
@ -118,6 +118,15 @@ func handleConnection(conn net.Conn) {
|
|||||||
|
|
||||||
// Queue the actions for processing
|
// Queue the actions for processing
|
||||||
if batch.PlayerId == int32(playerID) {
|
if batch.PlayerId == int32(playerID) {
|
||||||
|
for _, action := range batch.Actions {
|
||||||
|
if action.Type == pb.Action_DISCONNECT {
|
||||||
|
log.Printf("Player %d disconnected gracefully", playerID)
|
||||||
|
delete(players, playerID)
|
||||||
|
delete(playerConns, playerID)
|
||||||
|
delete(actionQueue, playerID)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
actionQueue[playerID] = append(actionQueue[playerID], batch.Actions...)
|
actionQueue[playerID] = append(actionQueue[playerID], batch.Actions...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user