Files
pokerth/docs/pokerth.asn1
T

846 lines
21 KiB
Plaintext
Raw Normal View History

/*****************************************************************************
* PokerTH - The open source texas holdem engine *
* Copyright (C) 2006-2011 Felix Hammer, Florian Thauer, Lothar May *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
*****************************************************************************/
POKERTH-PROTOCOL DEFINITIONS
IMPLICIT TAGS
EXTENSIBILITY IMPLIED ::=
BEGIN
PokerTHMessage ::= CHOICE {
announceMessage AnnounceMessage,
initMessage InitMessage,
authMessage AuthMessage,
initAckMessage InitAckMessage,
avatarRequestMessage AvatarRequestMessage,
avatarReplyMessage AvatarReplyMessage,
playerListMessage PlayerListMessage,
gameListMessage GameListMessage,
playerInfoRequestMessage PlayerInfoRequestMessage,
playerInfoReplyMessage PlayerInfoReplyMessage,
2009-07-11 22:04:46 +00:00
subscriptionRequestMessage SubscriptionRequestMessage,
joinGameRequestMessage JoinGameRequestMessage,
2009-07-11 22:04:46 +00:00
joinGameReplyMessage JoinGameReplyMessage,
gamePlayerMessage GamePlayerMessage,
kickPlayerRequestMessage KickPlayerRequestMessage,
leaveGameRequestMessage LeaveGameRequestMessage,
invitePlayerToGameMessage InvitePlayerToGameMessage,
2010-03-30 10:59:20 +00:00
inviteNotifyMessage InviteNotifyMessage,
rejectGameInvitationMessage RejectGameInvitationMessage,
2010-03-30 10:59:20 +00:00
rejectInvNotifyMessage RejectInvNotifyMessage,
2009-07-11 22:04:46 +00:00
startEventMessage StartEventMessage,
startEventAckMessage StartEventAckMessage,
gameStartMessage GameStartMessage,
handStartMessage HandStartMessage,
playersTurnMessage PlayersTurnMessage,
myActionRequestMessage MyActionRequestMessage,
yourActionRejectedMessage YourActionRejectedMessage,
2009-07-12 23:07:20 +00:00
playersActionDoneMessage PlayersActionDoneMessage,
dealFlopCardsMessage DealFlopCardsMessage,
dealTurnCardMessage DealTurnCardMessage,
dealRiverCardMessage DealRiverCardMessage,
allInShowCardsMessage AllInShowCardsMessage,
endOfHandMessage EndOfHandMessage,
2010-07-08 19:01:41 +00:00
showMyCardsRequestMessage ShowMyCardsRequestMessage,
afterHandShowCardsMessage AfterHandShowCardsMessage,
2009-07-12 23:07:20 +00:00
endOfGameMessage EndOfGameMessage,
playerIdChangedMessage PlayerIdChangedMessage,
askKickPlayerMessage AskKickPlayerMessage,
askKickDeniedMessage AskKickDeniedMessage,
startKickPetitionMessage StartKickPetitionMessage,
voteKickRequestMessage VoteKickRequestMessage,
voteKickReplyMessage VoteKickReplyMessage,
kickPetitionUpdateMessage KickPetitionUpdateMessage,
endKickPetitionMessage EndKickPetitionMessage,
2009-07-12 23:07:20 +00:00
statisticsMessage StatisticsMessage,
chatRequestMessage ChatRequestMessage,
chatMessage ChatMessage,
chatRejectMessage ChatRejectMessage,
2009-07-12 23:07:20 +00:00
dialogMessage DialogMessage,
2009-07-19 22:40:12 +00:00
timeoutWarningMessage TimeoutWarningMessage,
resetTimeoutMessage ResetTimeoutMessage,
reportAvatarMessage ReportAvatarMessage,
reportAvatarAckMessage ReportAvatarAckMessage,
2012-03-31 20:14:11 +00:00
reportGameMessage ReportGameMessage,
reportGameAckMessage ReportGameAckMessage,
2009-07-12 23:07:20 +00:00
errorMessage ErrorMessage
}
AnnounceMessage ::= [APPLICATION 0] SEQUENCE {
protocolVersion Version,
latestGameVersion Version,
latestBetaRevision INTEGER(0..65535),
serverType ENUMERATED {
serverTypeLAN (0),
serverTypeInternetNoAuth (1),
serverTypeInternetAuth (2)
},
numPlayersOnServer INTEGER(0..65535)
}
2009-10-23 22:11:01 +00:00
-- buildId contains a constant build id (specific for Windows/Linux/Mac builds)
InitMessage ::= [APPLICATION 1] SEQUENCE {
requestedVersion Version,
2009-10-23 22:11:01 +00:00
buildId INTEGER,
myLastSessionId Guid OPTIONAL,
authServerPassword UTF8String (SIZE(1..64)) OPTIONAL,
login CHOICE {
2009-10-23 22:11:01 +00:00
guestLogin [0] GuestLogin,
authenticatedLogin [1] AuthenticatedLogin,
unauthenticatedLogin [2] UnauthenticatedLogin
}
}
2009-07-11 22:04:46 +00:00
Version ::= SEQUENCE {
major INTEGER(0..65535),
minor INTEGER(0..65535)
}
2009-10-23 22:11:01 +00:00
GuestLogin ::= SEQUENCE {
nickName UTF8String (SIZE(1..64))
}
-- Login data is according to SCRAM SHA-1
AuthenticatedLogin ::= SEQUENCE {
clientUserData OCTET STRING (SIZE(1..256)),
2009-07-18 12:05:55 +00:00
avatar AvatarHash OPTIONAL
}
UnauthenticatedLogin ::= SEQUENCE {
nickName UTF8String (SIZE(1..64)),
avatar AvatarHash OPTIONAL
}
AuthMessage ::= [APPLICATION 2] CHOICE {
authServerChallenge [0] AuthServerChallenge,
authClientResponse [1] AuthClientResponse,
authServerVerification [2] AuthServerVerification
}
AuthServerChallenge ::= SEQUENCE {
serverChallenge OCTET STRING (SIZE(1..256))
}
AuthClientResponse ::= SEQUENCE {
clientResponse OCTET STRING (SIZE(1..256))
}
AuthServerVerification ::= SEQUENCE {
serverVerification OCTET STRING (SIZE(1..256))
2009-07-18 12:05:55 +00:00
}
InitAckMessage ::= [APPLICATION 3] SEQUENCE {
yourSessionId Guid,
yourPlayerId NonZeroId,
2011-07-16 14:52:45 +00:00
yourAvatar AvatarHash OPTIONAL,
rejoinGameId NonZeroId OPTIONAL
}
AvatarRequestMessage ::= [APPLICATION 4] SEQUENCE {
requestId NonZeroId,
avatar AvatarHash
}
AvatarReplyMessage ::= [APPLICATION 5] SEQUENCE {
requestId NonZeroId,
avatarResult CHOICE {
2009-07-18 12:05:55 +00:00
avatarHeader [0] AvatarHeader,
avatarData [1] AvatarData,
avatarEnd [2] AvatarEnd,
unknownAvatar [3] UnknownAvatar
}
}
2009-07-18 12:05:55 +00:00
AvatarHeader ::= SEQUENCE {
2009-07-19 22:40:12 +00:00
avatarType NetAvatarType,
2009-07-18 12:05:55 +00:00
avatarSize INTEGER(32..30720)
}
AvatarData ::= SEQUENCE {
avatarBlock OCTET STRING (SIZE(1..256))
}
AvatarEnd ::= SEQUENCE {
}
UnknownAvatar ::= SEQUENCE {
}
2009-08-01 20:53:54 +00:00
AvatarHash ::= OCTET STRING (SIZE(16)) -- md5 hash value
2009-07-11 22:04:46 +00:00
2009-07-19 22:40:12 +00:00
NetAvatarType ::= ENUMERATED {
avatarImagePng (1),
avatarImageJpg (2),
avatarImageGif (3)
2009-07-11 22:04:46 +00:00
}
PlayerListMessage ::= [APPLICATION 6] SEQUENCE {
playerId NonZeroId,
playerListNotification ENUMERATED {
playerListNew (0),
playerListLeft (1)
}
}
GameListMessage ::= [APPLICATION 7] SEQUENCE {
gameId NonZeroId,
gameListNotification CHOICE {
gameListNew [0] GameListNew,
gameListUpdate [1] GameListUpdate,
gameListPlayerJoined [2] GameListPlayerJoined,
gameListPlayerLeft [3] GameListPlayerLeft,
gameListAdminChanged [4] GameListAdminChanged
}
}
GameListNew ::= SEQUENCE {
2009-07-19 22:40:12 +00:00
gameMode NetGameMode,
isPrivate BOOLEAN,
2009-08-04 06:59:58 +00:00
playerIds SEQUENCE SIZE(0..10) OF NonZeroId,
adminPlayerId NonZeroId,
2009-07-19 22:40:12 +00:00
gameInfo NetGameInfo
}
GameListUpdate ::= SEQUENCE {
2009-07-19 22:40:12 +00:00
gameMode NetGameMode
}
GameListPlayerJoined ::= SEQUENCE {
playerId NonZeroId
}
GameListPlayerLeft ::= SEQUENCE {
playerId NonZeroId
}
GameListAdminChanged ::= SEQUENCE {
newAdminPlayerId NonZeroId
}
2009-07-19 22:40:12 +00:00
NetGameMode ::= ENUMERATED {
2009-07-11 22:04:46 +00:00
gameCreated (1),
gameStarted (2),
gameClosed (3)
}
PlayerInfoRequestMessage ::= [APPLICATION 8] SEQUENCE {
playerId NonZeroId
}
PlayerInfoReplyMessage ::= [APPLICATION 9] SEQUENCE {
playerId NonZeroId,
playerInfoResult CHOICE {
playerInfoData [0] PlayerInfoData,
unknownPlayerInfo [1] UnknownPlayerInfo
}
}
PlayerInfoRights ::= ENUMERATED {
playerRightsGuest (1),
playerRightsNormal (2),
playerRightsAdmin (3)
}
PlayerInfoData ::= SEQUENCE {
2009-08-04 21:41:10 +00:00
playerName UTF8String (SIZE(1..32)),
isHuman BOOLEAN,
playerRights PlayerInfoRights,
countryCode UTF8String (SIZE(2)) OPTIONAL,
avatarData SEQUENCE {
2009-07-19 22:40:12 +00:00
avatarType NetAvatarType,
avatar AvatarHash
} OPTIONAL
}
UnknownPlayerInfo ::= SEQUENCE {
}
2009-07-11 22:04:46 +00:00
-- The following request will not be confirmed by the server. It is used,
-- optionally, to reduce server traffic. The server might ignore it.
SubscriptionRequestMessage ::= [APPLICATION 10] SEQUENCE {
subscriptionAction ENUMERATED {
unsubscribeGameList (1),
resubscribeGameList (2)
}
}
JoinGameRequestMessage ::= [APPLICATION 11] SEQUENCE {
joinGameAction CHOICE {
joinExistingGame [0] JoinExistingGame,
2011-07-16 14:52:45 +00:00
joinNewGame [1] JoinNewGame,
rejoinExistingGame [2] RejoinExistingGame
},
autoLeave BOOLEAN
}
JoinExistingGame ::= SEQUENCE {
gameId NonZeroId,
password UTF8String (SIZE(1..64)) OPTIONAL
}
JoinNewGame ::= SEQUENCE {
gameInfo NetGameInfo,
password UTF8String (SIZE(1..64)) OPTIONAL
}
2011-07-16 14:52:45 +00:00
RejoinExistingGame ::= SEQUENCE {
gameId NonZeroId
}
JoinGameReplyMessage ::= [APPLICATION 12] SEQUENCE {
gameId NonZeroId,
joinGameResult CHOICE {
joinGameAck [0] JoinGameAck,
joinGameFailed [1] JoinGameFailed
}
}
JoinGameAck ::= SEQUENCE {
2010-03-26 20:47:26 +00:00
areYouGameAdmin BOOLEAN,
2009-07-19 22:40:12 +00:00
gameInfo NetGameInfo
}
JoinGameFailed ::= SEQUENCE {
joinGameFailureReason ENUMERATED {
invalidGame (1),
gameIsFull (2),
gameIsRunning (3),
invalidPassword (4),
notAllowedAsGuest (5),
notInvited (6),
2010-08-01 19:52:00 +00:00
gameNameInUse (7),
2010-09-05 00:15:25 +00:00
badGameName (8),
2010-11-14 17:58:25 +00:00
invalidSettings (9),
2011-07-16 14:52:45 +00:00
ipAddressBlocked (10),
rejoinFailed (11)
}
}
2009-07-19 22:40:12 +00:00
NetGameInfo ::= SEQUENCE {
2009-07-31 23:28:37 +00:00
gameName UTF8String (SIZE(1..64)),
netGameType ENUMERATED {
normalGame (1),
registeredOnlyGame (2),
inviteOnlyGame (3),
rankingGame (4)
},
2009-07-11 22:04:46 +00:00
maxNumPlayers INTEGER(2..10),
raiseIntervalMode CHOICE {
raiseEveryHands [0] INTEGER(1..1000),
raiseEveryMinutes [1] INTEGER(1..1000)
},
endRaiseMode ENUMERATED {
doubleBlinds (1),
raiseByEndValue (2),
keepLastBlind (3)
},
proposedGuiSpeed INTEGER(1..11),
delayBetweenHands INTEGER(5..20), -- These are seconds
playerActionTimeout INTEGER(0..60), -- These are seconds
firstSmallBlind INTEGER(1..20000),
endRaiseSmallBlindValue InitialAmountOfMoney,
startMoney InitialNonZeroAmountOfMoney,
manualBlinds SEQUENCE SIZE(0..30) OF InitialNonZeroAmountOfMoney
}
GamePlayerMessage ::= [APPLICATION 13] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId,
gamePlayerNotification CHOICE {
gamePlayerJoined [0] GamePlayerJoined,
gamePlayerLeft [1] GamePlayerLeft,
gameAdminChanged [2] GameAdminChanged,
removedFromGame [3] RemovedFromGame
}
}
2009-07-11 22:04:46 +00:00
GamePlayerJoined ::= SEQUENCE {
2009-07-31 21:10:21 +00:00
playerId NonZeroId,
2010-03-26 20:47:26 +00:00
isGameAdmin BOOLEAN
}
2009-07-11 22:04:46 +00:00
GamePlayerLeft ::= SEQUENCE {
2009-07-19 22:40:12 +00:00
playerId NonZeroId,
gamePlayerLeftReason ENUMERATED {
leftOnRequest (0),
leftKicked (1),
leftError (2)
}
2009-07-11 22:04:46 +00:00
}
GameAdminChanged ::= SEQUENCE {
newAdminPlayerId NonZeroId
}
RemovedFromGame ::= SEQUENCE {
removedFromGameReason ENUMERATED {
removedOnRequest (0), -- No error, client wished to leave.
kickedFromGame (1),
gameIsFull (2),
gameIsRunning (3),
gameTimeout (4),
removedStartFailed (5)
2009-07-11 22:04:46 +00:00
}
}
KickPlayerRequestMessage ::= [APPLICATION 14] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId,
playerId NonZeroId
}
LeaveGameRequestMessage ::= [APPLICATION 15] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId
}
InvitePlayerToGameMessage ::= [APPLICATION 16] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId
}
2010-03-30 10:59:20 +00:00
InviteNotifyMessage ::= [APPLICATION 17] SEQUENCE {
gameId NonZeroId,
2010-03-30 10:59:20 +00:00
playerIdWho NonZeroId,
playerIdByWhom NonZeroId
}
2010-03-30 10:59:20 +00:00
RejectGameInvReason ::= ENUMERATED {
no (0),
busy (1)
}
RejectGameInvitationMessage ::= [APPLICATION 18] SEQUENCE {
gameId NonZeroId,
myRejectReason RejectGameInvReason
}
RejectInvNotifyMessage ::= [APPLICATION 19] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId,
playerRejectReason RejectGameInvReason
}
StartEventMessage ::= [APPLICATION 20] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId,
startEventType CHOICE {
startEvent [0] StartEvent,
rejoinEvent [1] RejoinEvent
}
}
StartEvent ::= SEQUENCE {
2009-07-11 22:04:46 +00:00
fillWithComputerPlayers BOOLEAN
}
RejoinEvent ::= SEQUENCE {
}
2010-03-30 10:59:20 +00:00
StartEventAckMessage ::= [APPLICATION 21] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId
}
2011-07-16 14:52:45 +00:00
RejoinPlayerData ::= SEQUENCE {
playerId NonZeroId,
playerMoney AmountOfMoney
2011-07-16 14:52:45 +00:00
}
GameStartModeInitial ::= SEQUENCE {
playerSeats SEQUENCE SIZE(2..10) OF NonZeroId
}
GameStartModeRejoin ::= SEQUENCE {
handNum NonZeroId,
2011-07-16 14:52:45 +00:00
rejoinPlayerData SEQUENCE SIZE(2..10) OF RejoinPlayerData
}
2010-03-30 10:59:20 +00:00
GameStartMessage ::= [APPLICATION 22] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId,
startDealerPlayerId NonZeroId,
2011-07-16 14:52:45 +00:00
gameStartMode CHOICE {
gameStartModeInitial [0] GameStartModeInitial,
gameStartModeRejoin [1] GameStartModeRejoin
}
2009-07-11 22:04:46 +00:00
}
PlainCards ::= SEQUENCE {
plainCard1 Card,
plainCard2 Card
}
EncryptedCards ::= SEQUENCE {
2010-09-04 12:36:39 +00:00
cardData OCTET STRING (SIZE(16..64))
}
2010-03-30 10:59:20 +00:00
HandStartMessage ::= [APPLICATION 23] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId,
yourCards CHOICE {
plainCards [0] PlainCards,
encryptedCards [1] EncryptedCards
},
smallBlind INTEGER(1..100000000),
seatStates SEQUENCE SIZE(2..10) OF NetPlayerState
2009-07-11 22:04:46 +00:00
}
2010-03-30 10:59:20 +00:00
PlayersTurnMessage ::= [APPLICATION 24] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId,
playerId NonZeroId,
2009-07-19 22:40:12 +00:00
gameState NetGameState
2009-07-11 22:04:46 +00:00
}
2010-03-30 10:59:20 +00:00
MyActionRequestMessage ::= [APPLICATION 25] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId,
handNum NonZeroId,
2009-07-19 22:40:12 +00:00
gameState NetGameState,
myAction NetPlayerAction,
myRelativeBet AmountOfMoney
2009-07-11 22:04:46 +00:00
}
2010-03-30 10:59:20 +00:00
YourActionRejectedMessage ::= [APPLICATION 26] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId,
2009-07-19 22:40:12 +00:00
gameState NetGameState,
yourAction NetPlayerAction,
yourRelativeBet AmountOfMoney,
2009-07-11 22:04:46 +00:00
rejectionReason ENUMERATED {
rejectedInvalidGameState (1),
rejectedNotYourTurn (2),
rejectedActionNotAllowed (3)
}
}
2010-03-30 10:59:20 +00:00
PlayersActionDoneMessage ::= [APPLICATION 27] SEQUENCE {
2009-07-11 22:04:46 +00:00
gameId NonZeroId,
playerId NonZeroId,
2009-07-19 22:40:12 +00:00
gameState NetGameState,
playerAction NetPlayerAction,
totalPlayerBet AmountOfMoney,
playerMoney AmountOfMoney,
highestSet AmountOfMoney,
minimumRaise AmountOfMoney
2009-07-11 22:04:46 +00:00
}
2010-03-30 10:59:20 +00:00
DealFlopCardsMessage ::= [APPLICATION 28] SEQUENCE {
2009-07-12 23:07:20 +00:00
gameId NonZeroId,
flopCard1 Card,
flopCard2 Card,
flopCard3 Card
2009-07-12 23:07:20 +00:00
}
2010-03-30 10:59:20 +00:00
DealTurnCardMessage ::= [APPLICATION 29] SEQUENCE {
2009-07-12 23:07:20 +00:00
gameId NonZeroId,
turnCard Card
}
2010-03-30 10:59:20 +00:00
DealRiverCardMessage ::= [APPLICATION 30] SEQUENCE {
2009-07-12 23:07:20 +00:00
gameId NonZeroId,
riverCard Card
}
2010-03-30 10:59:20 +00:00
AllInShowCardsMessage ::= [APPLICATION 31] SEQUENCE {
2009-07-12 23:07:20 +00:00
gameId NonZeroId,
playersAllIn SEQUENCE SIZE(1..10) OF PlayerAllIn
}
PlayerAllIn ::= SEQUENCE {
playerId NonZeroId,
allInCard1 Card,
allInCard2 Card
2009-07-12 23:07:20 +00:00
}
2010-03-30 10:59:20 +00:00
EndOfHandMessage ::= [APPLICATION 32] SEQUENCE {
2009-07-12 23:07:20 +00:00
gameId NonZeroId,
endOfHandType CHOICE {
endOfHandShowCards [0] EndOfHandShowCards,
endOfHandHideCards [1] EndOfHandHideCards
}
}
EndOfHandShowCards ::= SEQUENCE {
playerResults SEQUENCE SIZE(1..10) OF PlayerResult
}
PlayerResult ::= SEQUENCE {
playerId NonZeroId,
resultCard1 Card,
resultCard2 Card,
2009-07-12 23:07:20 +00:00
bestHandPosition SEQUENCE SIZE(5) OF INTEGER, -- TODO size restrictions
moneyWon AmountOfMoney,
2011-11-13 19:27:01 +00:00
playerMoney AmountOfMoney,
cardsValue INTEGER OPTIONAL
2009-07-12 23:07:20 +00:00
}
EndOfHandHideCards ::= SEQUENCE {
playerId NonZeroId,
moneyWon AmountOfMoney,
playerMoney AmountOfMoney
2009-07-12 23:07:20 +00:00
}
ShowMyCardsRequestMessage ::= [APPLICATION 33] SEQUENCE {
}
AfterHandShowCardsMessage ::= [APPLICATION 34] SEQUENCE {
playerResult PlayerResult
}
EndOfGameMessage ::= [APPLICATION 35] SEQUENCE {
2009-07-12 23:07:20 +00:00
gameId NonZeroId,
winnerPlayerId NonZeroId
}
PlayerIdChangedMessage ::= [APPLICATION 36] SEQUENCE {
oldPlayerId NonZeroId,
newPlayerId NonZeroId
}
AskKickPlayerMessage ::= [APPLICATION 64] SEQUENCE {
2009-08-03 21:56:20 +00:00
gameId NonZeroId,
playerId NonZeroId
}
AskKickDeniedMessage ::= [APPLICATION 65] SEQUENCE {
2009-08-03 21:56:20 +00:00
gameId NonZeroId,
playerId NonZeroId,
kickDeniedReason ENUMERATED {
kickDeniedInvalidGameState (0),
kickDeniedNotPossible (1),
kickDeniedTryAgainLater (2),
kickDeniedAlreadyInProgress (3),
kickDeniedInvalidPlayerId (4)
}
}
StartKickPetitionMessage ::= [APPLICATION 66] SEQUENCE {
2009-08-03 21:56:20 +00:00
gameId NonZeroId,
petitionId NonZeroId,
proposingPlayerId NonZeroId,
kickPlayerId NonZeroId,
kickTimeoutSec INTEGER(1..120),
numVotesNeededToKick INTEGER(1..9)
}
VoteKickRequestMessage ::= [APPLICATION 67] SEQUENCE {
2009-08-03 21:56:20 +00:00
gameId NonZeroId,
petitionId NonZeroId,
voteKick BOOLEAN
}
VoteKickReplyMessage ::= [APPLICATION 68] SEQUENCE {
2009-08-03 21:56:20 +00:00
gameId NonZeroId,
petitionId NonZeroId,
voteKickReplyType CHOICE {
voteKickAck [0] VoteKickAck,
voteKickDenied [1] VoteKickDenied
}
}
VoteKickAck ::= SEQUENCE {
}
VoteKickDenied ::= SEQUENCE {
voteKickDeniedReason ENUMERATED {
voteKickDeniedInvalid (0),
voteKickDeniedAlreadyVoted (1)
}
}
KickPetitionUpdateMessage ::= [APPLICATION 69] SEQUENCE {
2009-08-03 21:56:20 +00:00
gameId NonZeroId,
petitionId NonZeroId,
numVotesAgainstKicking INTEGER(0..9),
numVotesInFavourOfKicking INTEGER(1..9),
numVotesNeededToKick INTEGER(1..9)
}
EndKickPetitionMessage ::= [APPLICATION 70] SEQUENCE {
2009-08-03 21:56:20 +00:00
gameId NonZeroId,
petitionId NonZeroId,
numVotesAgainstKicking INTEGER(0..9),
numVotesInFavourOfKicking INTEGER(1..9),
resultPlayerKicked BOOLEAN,
petitionEndReason ENUMERATED {
petitionEndEnoughVotes (0),
petitionEndTooFewPlayers (1),
petitionEndPlayerLeft (2),
petitionEndTimeout (3)
}
}
2009-07-12 23:07:20 +00:00
StatisticsMessage ::= [APPLICATION 128] SEQUENCE {
statisticsData SEQUENCE SIZE(1..32) OF StatisticsData
}
StatisticsData ::= SEQUENCE {
statisticsType ENUMERATED {
statNumberOfPlayers (1)
},
statisticsValue INTEGER
}
ChatRequestMessage ::= [APPLICATION 129] SEQUENCE {
chatRequestType CHOICE {
chatRequestTypeLobby [0] ChatRequestTypeLobby,
chatRequestTypeGame [1] ChatRequestTypeGame,
chatRequestTypePrivate [2] ChatRequestTypePrivate
},
2009-07-31 23:28:37 +00:00
chatText UTF8String (SIZE(1..128))
2009-07-12 23:07:20 +00:00
}
ChatRequestTypeLobby ::= SEQUENCE {
}
ChatRequestTypeGame ::= SEQUENCE {
gameId NonZeroId
}
ChatRequestTypePrivate ::= SEQUENCE {
targetPlayerId NonZeroId
}
2009-07-12 23:07:20 +00:00
ChatMessage ::= [APPLICATION 130] SEQUENCE {
chatType CHOICE {
chatTypeLobby [0] ChatTypeLobby,
chatTypeGame [1] ChatTypeGame,
2009-08-17 09:45:06 +00:00
chatTypeBot [2] ChatTypeBot,
chatTypeBroadcast [3] ChatTypeBroadcast,
chatTypePrivate [4] ChatTypePrivate
},
2009-07-31 23:28:37 +00:00
chatText UTF8String (SIZE(1..128))
2009-07-12 23:07:20 +00:00
}
ChatTypeLobby ::= SEQUENCE {
playerId NonZeroId
}
ChatTypeGame ::= SEQUENCE {
gameId NonZeroId,
playerId NonZeroId
}
ChatTypeBroadcast ::= SEQUENCE {
}
2009-08-17 09:45:06 +00:00
ChatTypeBot ::= SEQUENCE {
}
ChatTypePrivate ::= SEQUENCE {
playerId NonZeroId
}
ChatRejectMessage ::= [APPLICATION 131] SEQUENCE {
chatText UTF8String (SIZE(1..128))
}
DialogMessage ::= [APPLICATION 132] SEQUENCE {
2009-07-31 23:28:37 +00:00
notificationText UTF8String (SIZE(1..128))
2009-07-12 23:07:20 +00:00
}
TimeoutWarningMessage ::= [APPLICATION 133] SEQUENCE {
2009-07-19 22:40:12 +00:00
timeoutReason ENUMERATED {
timeoutNoDataReceived (0),
timeoutInactiveGame (1),
timeoutKickAfterAutofold (2)
2009-07-19 22:40:12 +00:00
},
remainingSeconds INTEGER
}
ResetTimeoutMessage ::= [APPLICATION 134] SEQUENCE {
2009-07-19 22:40:12 +00:00
}
ReportAvatarMessage ::= [APPLICATION 135] SEQUENCE {
reportedPlayerId NonZeroId,
reportedAvatar AvatarHash
}
ReportAvatarAckMessage ::= [APPLICATION 136] SEQUENCE {
reportedPlayerId NonZeroId,
2012-03-31 20:14:11 +00:00
reportAvatarResult ENUMERATED {
avatarReportAccepted (0),
avatarReportDuplicate (1),
avatarReportInvalid (2)
}
}
2009-07-19 22:40:12 +00:00
2012-03-31 20:14:11 +00:00
ReportGameMessage ::= [APPLICATION 137] SEQUENCE {
reportedGameId NonZeroId
}
ReportGameAckMessage ::= [APPLICATION 138] SEQUENCE {
reportedGameId NonZeroId,
reportGameResult ENUMERATED {
gameReportAccepted (0),
gameReportDuplicate (1),
gameReportInvalid (2)
}
}
2009-07-12 23:07:20 +00:00
ErrorMessage ::= [APPLICATION 255] SEQUENCE {
errorReason ENUMERATED {
errorReserved (0),
errorInitVersionNotSupported (1),
errorInitServerFull (2),
errorInitAuthFailure (3),
errorInitPlayerNameInUse (4),
errorInitInvalidPlayerName (5),
errorInitServerMaintenance (6),
errorInitBlocked (7),
errorAvatarTooLarge (8),
2009-07-12 23:07:20 +00:00
errorInvalidPacket (256),
errorInvalidState (257),
errorKickedFromServer (258),
errorBannedFromServer (259),
errorBlockedByServer (260),
errorSessionTimeout (261)
2009-07-12 23:07:20 +00:00
}
}
2009-07-19 22:40:12 +00:00
NetGameState ::= ENUMERATED {
2009-07-11 22:04:46 +00:00
statePreflop (0),
stateFlop (1),
stateTurn (2),
stateRiver (3),
statePreflopSmallBlind (4),
statePreflopBigBlind (5)
}
2009-07-19 22:40:12 +00:00
NetPlayerAction ::= ENUMERATED {
2009-07-11 22:04:46 +00:00
actionNone (0),
actionFold (1),
actionCheck (2),
actionCall (3),
actionBet (4),
actionRaise (5),
actionAllIn (6)
}
NetPlayerState ::= ENUMERATED {
playerStateNormal (0),
playerStateSessionInactive (1),
playerStateNoMoney (2)
}
NonZeroId ::= INTEGER(1..4294967295)
2009-07-12 23:07:20 +00:00
Id ::= INTEGER(0..4294967295)
Guid ::= OCTET STRING (SIZE(16))
2009-07-11 22:04:46 +00:00
Card ::= INTEGER(0..51)
AmountOfMoney ::= INTEGER(0..10000000)
InitialAmountOfMoney ::= INTEGER(0..1000000)
InitialNonZeroAmountOfMoney ::= INTEGER(1..1000000)
END