/*****************************************************************************
 * 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/>.     *
 *****************************************************************************/

CHATCLEANER-PROTOCOL DEFINITIONS
IMPLICIT TAGS
EXTENSIBILITY IMPLIED ::=

BEGIN

ChatCleanerMessage ::= CHOICE {
	cleanerInitMessage			CleanerInitMessage,
	cleanerInitAckMessage		CleanerInitAckMessage,
	cleanerChatRequestMessage	CleanerChatRequestMessage,
	cleanerChatReplyMessage		CleanerChatReplyMessage
}

CleanerInitMessage ::= [APPLICATION 0] SEQUENCE {
	requestedVersion			INTEGER(0..65535),
	clientSecret				UTF8String (SIZE(1..32))
}

CleanerInitAckMessage ::= [APPLICATION 1] SEQUENCE {
	serverVersion				INTEGER(0..65535),
	serverSecret				UTF8String (SIZE(1..32))
}

CleanerChatType ::= CHOICE {
	cleanerChatTypeLobby	[0] CleanerChatTypeLobby,
	cleanerChatTypeGame		[1] CleanerChatTypeGame
}

CleanerChatTypeLobby ::= SEQUENCE {
}

CleanerChatTypeGame ::= SEQUENCE {
	gameId						INTEGER(1..4294967295)
}

CleanerChatRequestMessage ::= [APPLICATION 2] SEQUENCE {
	requestId					INTEGER(1..4294967295),
	cleanerChatType				CleanerChatType,
	playerId					INTEGER(1..4294967295),
	playerName					UTF8String (SIZE(1..32)),
	chatMessage					UTF8String (SIZE(1..128))
}

CleanerChatReplyMessage ::= [APPLICATION 3] SEQUENCE {
	requestId					INTEGER(1..4294967295),
	cleanerChatType				CleanerChatType,
	playerId					INTEGER(1..4294967295),
	cleanerActionType			ENUMERATED {
		cleanerActionNone		(0),
		cleanerActionWarning	(1),
		cleanerActionKick		(2),
		cleanerActionBan		(3),
		cleanerActionMute		(4)
	},
	cleanerText					UTF8String (SIZE(1..128)) OPTIONAL
}

END
