67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package handlers
|
|
|
|
import (
|
|
"customServer/internal/protocol"
|
|
"fmt"
|
|
"net"
|
|
)
|
|
|
|
// Dispatcher Function
|
|
// Note: We might pass dependencies here if we want to avoid globals,
|
|
// but for this refactor we'll stick to dispatching to handler functions.
|
|
|
|
func Dispatch(conn net.Conn, packetID int64, requestNumber int32, requestData []byte) ([]byte, int) {
|
|
fmt.Printf("[Dispatcher] Dispatching Request %d (PacketID: %d)\n", requestNumber, packetID)
|
|
|
|
switch requestNumber {
|
|
// Auth
|
|
case 400:
|
|
return HandleAsyncAuthRequest(conn, requestData)
|
|
case 401:
|
|
return HandleAsyncDisconnectRequest(conn, requestData)
|
|
case 408:
|
|
return HandleAskServerStatisticsRequest(conn, requestData)
|
|
|
|
// System / Buddies
|
|
case 515:
|
|
return HandleAsyncBuddyListRequest(conn, requestData)
|
|
case 560:
|
|
return HandleAsyncIgnoreListRequest(conn, requestData)
|
|
|
|
// Lobby
|
|
case 600:
|
|
return HandleEnterLobbyRequest(conn, requestData)
|
|
case 604:
|
|
return HandleLobbyPlayerListRequest(conn, requestData)
|
|
case 607:
|
|
return HandleLobbyCreateGameRequest(conn, requestData)
|
|
case 609:
|
|
return HandleLobbyGameListRequest(conn, requestData)
|
|
case 610:
|
|
return HandleLobbyJoinGameRequest(conn, requestData)
|
|
case 622:
|
|
return HandleObservableGameListRequest(conn, requestData)
|
|
|
|
// Game
|
|
case 511:
|
|
return HandleWhatsNewPussycatRequest(conn, requestData)
|
|
case 608:
|
|
// Note: 608 is LobbyGameCreatedRequest (OUT), 607 is IN.
|
|
// If client sends 608, it's weird.
|
|
return nil, 0
|
|
|
|
// System / Ping
|
|
case 777:
|
|
return HandlePingRequest(conn, requestData)
|
|
|
|
default:
|
|
fmt.Printf("[Dispatcher] Unknown Request %d\n", requestNumber)
|
|
return nil, 0
|
|
}
|
|
}
|
|
|
|
// Helper to encode varint for handlers that need it locally
|
|
func encodeVarint(v uint64) []byte {
|
|
return protocol.EncodeVarint(v)
|
|
}
|