More work on ASN.1 protocol spec.

This commit is contained in:
lotodore
2009-07-11 22:04:46 +00:00
parent e13f3be7f4
commit 9c1792a0f3
+150 -18
View File
@@ -31,9 +31,20 @@ PokerTHMessage ::= CHOICE {
gameListMessage GameListMessage,
playerInfoRequestMessage PlayerInfoRequestMessage,
playerInfoReplyMessage PlayerInfoReplyMessage,
subscriptionMessage SubscriptionMessage,
subscriptionRequestMessage SubscriptionRequestMessage,
joinGameRequestMessage JoinGameRequestMessage,
joinGameReplyMessage JoinGameReplyMessage
joinGameReplyMessage JoinGameReplyMessage,
gamePlayerMessage GamePlayerMessage,
kickPlayerRequestMessage KickPlayerRequestMessage,
leaveGameRequestMessage LeaveGameRequestMessage,
startEventMessage StartEventMessage,
startEventAckMessage StartEventAckMessage,
gameStartMessage GameStartMessage,
handStartMessage HandStartMessage,
playersTurnMessage PlayersTurnMessage,
myActionRequestMessage MyActionRequestMessage,
yourActionRejectedMessage YourActionRejectedMessage,
playersActionDoneMessage PlayersActionDoneMessage
}
InitMessage ::= [APPLICATION 0] SEQUENCE {
@@ -45,6 +56,11 @@ InitMessage ::= [APPLICATION 0] SEQUENCE {
}
}
Version ::= SEQUENCE {
major INTEGER(0..65535),
minor INTEGER(0..65535)
}
AnonymousLogin ::= SEQUENCE {
playerName UTF8String
}
@@ -82,6 +98,14 @@ AvatarData ::= SEQUENCE {
UnknownAvatar ::= SEQUENCE {
}
AvatarHash ::= OCTET STRING (SIZE(20)) -- sha-1 hash value
AvatarType ::= ENUMERATED {
imagePng (1),
imageJpg (2),
imageGif (3)
}
GameListMessage ::= [APPLICATION 4] SEQUENCE {
gameId NonZeroId,
gameListNotification CHOICE {
@@ -117,6 +141,12 @@ GameListAdminChanged ::= SEQUENCE {
newAdminPlayerId NonZeroId
}
GameMode ::= ENUMERATED {
gameCreated (1),
gameStarted (2),
gameClosed (3)
}
PlayerInfoRequestMessage ::= [APPLICATION 5] SEQUENCE {
playerId NonZeroId
}
@@ -141,7 +171,10 @@ PlayerInfoData ::= SEQUENCE {
UnknownPlayerInfo ::= SEQUENCE {
}
SubscriptionMessage ::= [APPLICATION 7] SEQUENCE {
-- 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 7] SEQUENCE {
subscriptionAction ENUMERATED {
unsubscribeGameList (1),
resubscribeGameList (2)
@@ -188,7 +221,7 @@ JoinGameFailed ::= SEQUENCE {
GameInfo ::= SEQUENCE {
gameName UTF8String,
maxNumPlayers NumPlayers,
maxNumPlayers INTEGER(2..10),
raiseIntervalMode CHOICE {
raiseEveryHands [0] INTEGER(1..1000),
raiseEveryMinutes [1] INTEGER(1..1000)
@@ -206,29 +239,128 @@ GameInfo ::= SEQUENCE {
manualBlinds SEQUENCE SIZE(0..30) OF INTEGER(1..20001)
}
GameMode ::= ENUMERATED {
created (1),
started (2),
closed (3)
GamePlayerMessage ::= [APPLICATION 10] SEQUENCE {
gameId NonZeroId,
gamePlayerNotification CHOICE {
gamePlayerJoined [0] GamePlayerJoined,
gamePlayerLeft [1] GamePlayerLeft,
gameAdminChanged [2] GameAdminChanged,
removedFromGame [3] RemovedFromGame
}
}
AvatarHash ::= OCTET STRING (SIZE(20)) -- sha-1 hash value
AvatarType ::= ENUMERATED {
png (1),
jpg (2),
gif (3)
GamePlayerJoined ::= SEQUENCE {
playerId NonZeroId
}
Version ::= SEQUENCE {
major INTEGER(0..65535),
minor INTEGER(0..65535)
GamePlayerLeft ::= SEQUENCE {
playerId NonZeroId
}
GameAdminChanged ::= SEQUENCE {
newAdminPlayerId NonZeroId
}
RemovedFromGame ::= SEQUENCE {
removedFromGameReason ENUMERATED {
removedOnRequest (0), -- No error, client wished to leave.
kickedFromGame (1),
gameIsFull (2),
gameIsRunning (3),
gameTimeout (4)
}
}
KickPlayerRequestMessage ::= [APPLICATION 11] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId
}
LeaveGameRequestMessage ::= [APPLICATION 12] SEQUENCE {
gameId NonZeroId
}
StartEventMessage ::= [APPLICATION 13] SEQUENCE {
gameId NonZeroId,
fillWithComputerPlayers BOOLEAN
}
StartEventAckMessage ::= [APPLICATION 14] SEQUENCE {
gameId NonZeroId
}
GameStartMessage ::= [APPLICATION 15] SEQUENCE {
gameId NonZeroId,
startDealerPlayerId NonZeroId,
playerSeats SEQUENCE SIZE(2..10) OF NonZeroId
}
HandStartMessage ::= [APPLICATION 16] SEQUENCE {
gameId NonZeroId,
yourFirstCard Card,
yourSecondCard Card,
smallBlind INTEGER(1..20001)
}
PlayersTurnMessage ::= [APPLICATION 17] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId,
gameState GameState
}
MyActionRequestMessage ::= [APPLICATION 18] SEQUENCE {
gameId NonZeroId,
gameState GameState,
myAction PlayerAction,
myRelativeBet INTEGER(0..10000000)
}
YourActionRejectedMessage ::= [APPLICATION 19] SEQUENCE {
gameId NonZeroId,
gameState GameState,
yourAction PlayerAction,
yourRelativeBet INTEGER(0..10000000),
rejectionReason ENUMERATED {
rejectedInvalidGameState (1),
rejectedNotYourTurn (2),
rejectedActionNotAllowed (3)
}
}
PlayersActionDoneMessage ::= [APPLICATION 20] SEQUENCE {
gameId NonZeroId,
playerId NonZeroId,
gameState GameState,
playerAction PlayerAction,
totalPlayerBet INTEGER(0..10000000),
playerMoney INTEGER(0..10000000),
highestSet INTEGER(0..10000000),
minimumRaise INTEGER(0..10000000) -- TODO
}
GameState ::= ENUMERATED {
statePreflop (0),
stateFlop (1),
stateTurn (2),
stateRiver (3),
statePreflopSmallBlind (4),
statePreflopBigBlind (5)
}
PlayerAction ::= ENUMERATED {
actionNone (0),
actionFold (1),
actionCheck (2),
actionCall (3),
actionBet (4),
actionRaise (5),
actionAllIn (6)
}
NonZeroId ::= INTEGER(1..4294967295)
Guid ::= INTEGER(1..4294967295) -- TODO
NumPlayers ::= INTEGER(1..10)
Card ::= INTEGER(0..51)
END