netserver/HWProto.hs
changeset 1309 1a38a967bd48
parent 1308 d5dcd6cfa5e2
child 1317 13cf8c5a7428
equal deleted inserted replaced
1308:d5dcd6cfa5e2 1309:1a38a967bd48
     5 import Data.Word
     5 import Data.Word
     6 import Miscutils
     6 import Miscutils
     7 import Maybe (fromMaybe, fromJust)
     7 import Maybe (fromMaybe, fromJust)
     8 
     8 
     9 answerBadCmd = [(clientOnly, ["ERROR", "Bad command, state or incorrect parameter"])]
     9 answerBadCmd = [(clientOnly, ["ERROR", "Bad command, state or incorrect parameter"])]
    10 answerQuit = [(clientOnly, ["BYE"])]
    10 answerQuit = [(clientOnly, ["off"])]
    11 answerAbandoned = [(sameRoom, ["BYE"])]
    11 answerAbandoned = [(sameRoom, ["BYE"])]
    12 answerQuitInform nick = [(othersInRoom, ["QUIT", nick])]
    12 answerQuitInform nick = [(othersInRoom, ["LEFT", nick])]
    13 answerNickChosen = [(clientOnly, ["ERROR", "The nick already chosen"])]
    13 answerNickChosen = [(clientOnly, ["ERROR", "The nick already chosen"])]
    14 answerNickChooseAnother = [(clientOnly, ["WARNING", "Choose another nick"])]
    14 answerNickChooseAnother = [(clientOnly, ["WARNING", "Choose another nick"])]
    15 answerNick nick = [(clientOnly, ["NICK", nick])]
    15 answerNick nick = [(clientOnly, ["NICK", nick])]
    16 answerProtocolKnown = [(clientOnly, ["ERROR", "Protocol number already known"])]
    16 answerProtocolKnown = [(clientOnly, ["ERROR", "Protocol number already known"])]
    17 answerBadInput = [(clientOnly, ["ERROR", "Bad input"])]
    17 answerBadInput = [(clientOnly, ["ERROR", "Bad input"])]
    30 	if null (room client) then
    30 	if null (room client) then
    31 		(noChangeClients, noChangeRooms, answerQuit)
    31 		(noChangeClients, noChangeRooms, answerQuit)
    32 	else if isMaster client then
    32 	else if isMaster client then
    33 		(noChangeClients, removeRoom (room client), answerAbandoned) -- core disconnects clients on ROOMABANDONED answer
    33 		(noChangeClients, removeRoom (room client), answerAbandoned) -- core disconnects clients on ROOMABANDONED answer
    34 	else
    34 	else
    35 		(noChangeClients, noChangeRooms, answerQuitInform $ nick client)
    35 		(noChangeClients, noChangeRooms, answerQuit ++ (answerQuitInform $ nick client))
    36 
    36 
    37 
    37 
    38 -- check state and call state-dependent commmand handlers
    38 -- check state and call state-dependent commmand handlers
    39 handleCmd client clients rooms cmd =
    39 handleCmd client clients rooms cmd =
    40 	if null (nick client) || protocol client == 0 then
    40 	if null (nick client) || protocol client == 0 then