From 0dbc217c0f9a6b872410e1427a66a7b605458ce7 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 3 Sep 2014 16:36:28 -0400 Subject: it's simpler if these are just constants it's not like we'll ever care about exhaustive matching here --- src/constants.rs | 343 +++++++++++++++++++++++++++---------------------------- 1 file changed, 168 insertions(+), 175 deletions(-) diff --git a/src/constants.rs b/src/constants.rs index 0d96311..ce0ce9e 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -95,190 +95,183 @@ impl FromStr for Command { } } -#[deriving(PartialEq, Eq, Show)] -pub enum ReplyId { - // normal replies - RPL_WELCOME = 1, - RPL_YOURHOST = 2, - RPL_CREATED = 3, - RPL_MYINFO = 4, - RPL_BOUNCE = 5, - RPL_USERHOST = 302, - RPL_ISON = 303, - RPL_AWAY = 301, - RPL_UNAWAY = 305, - RPL_NOWAWAY = 306, - RPL_WHOISUSER = 311, - RPL_WHOISSERVER = 312, - RPL_WHOISOPERATOR = 313, - RPL_WHOISIDLE = 317, - RPL_ENDOFWHOIS = 318, - RPL_WHOISCHANNELS = 319, - RPL_WHOWASUSER = 314, - RPL_ENDOFWHOWAS = 369, - RPL_LISTSTART = 321, - RPL_LIST = 322, - RPL_LISTEND = 323, - RPL_UNIQOPIS = 325, - RPL_CHANNELMODEIS = 324, - RPL_NOTOPIC = 331, - RPL_TOPIC = 332, - RPL_INVITING = 341, - RPL_SUMMONING = 342, - RPL_INVITELIST = 346, - RPL_ENDOFINVITELIST = 347, - RPL_EXCEPTLIST = 348, - RPL_ENDOFEXCEPTLIST = 349, - RPL_VERSION = 351, - RPL_WHOREPLY = 352, - RPL_ENDOFWHO = 315, - RPL_NAMREPLY = 353, - RPL_ENDOFNAMES = 366, - RPL_LINKS = 364, - RPL_ENDOFLINKS = 365, - RPL_BANLIST = 367, - RPL_ENDOFBANLIST = 368, - RPL_INFO = 371, - RPL_ENDOFINFO = 374, - RPL_MOTDSTART = 375, - RPL_MOTD = 372, - RPL_ENDOFMOTD = 376, - RPL_YOUREOPER = 381, - RPL_REHASHING = 382, - RPL_YOURESERVICE = 383, - RPL_TIME = 391, - RPL_USERSSTART = 392, - RPL_USERS = 393, - RPL_ENDOFUSERS = 394, - RPL_NOUSERS = 395, - RPL_TRACELINK = 200, - RPL_TRACECONNECTING = 201, - RPL_TRACEHANDSHAKE = 202, - RPL_TRACEUNKNOWN = 203, - RPL_TRACEOPERATOR = 204, - RPL_TRACEUSER = 205, - RPL_TRACESERVER = 206, - RPL_TRACESERVICE = 207, - RPL_TRACENEWTYPE = 208, - RPL_TRACECLASS = 209, - RPL_TRACERECONNECT = 210, - RPL_TRACELOG = 261, - RPL_TRACEEND = 262, - RPL_STATSLINKINFO = 211, - RPL_STATSCOMMANDS = 212, - RPL_ENDOFSTATS = 219, - RPL_STATSUPTIME = 242, - RPL_STATSOLINE = 243, - RPL_UMODEIS = 221, - RPL_SERVLIST = 234, - RPL_SERVLISTEND = 235, - RPL_LUSERCLIENT = 251, - RPL_LUSEROP = 252, - RPL_LUSERUNKNOWN = 253, - RPL_LUSERCHANNELS = 254, - RPL_LUSERME = 255, - RPL_ADMINME = 256, - RPL_ADMINLOC1 = 257, - RPL_ADMINLOC2 = 258, - RPL_ADMINEMAIL = 259, - RPL_TRYAGAIN = 263, +// normal replies +pub static RPL_WELCOME: u16 = 1; +pub static RPL_YOURHOST: u16 = 2; +pub static RPL_CREATED: u16 = 3; +pub static RPL_MYINFO: u16 = 4; +pub static RPL_BOUNCE: u16 = 5; +pub static RPL_USERHOST: u16 = 302; +pub static RPL_ISON: u16 = 303; +pub static RPL_AWAY: u16 = 301; +pub static RPL_UNAWAY: u16 = 305; +pub static RPL_NOWAWAY: u16 = 306; +pub static RPL_WHOISUSER: u16 = 311; +pub static RPL_WHOISSERVER: u16 = 312; +pub static RPL_WHOISOPERATOR: u16 = 313; +pub static RPL_WHOISIDLE: u16 = 317; +pub static RPL_ENDOFWHOIS: u16 = 318; +pub static RPL_WHOISCHANNELS: u16 = 319; +pub static RPL_WHOWASUSER: u16 = 314; +pub static RPL_ENDOFWHOWAS: u16 = 369; +pub static RPL_LISTSTART: u16 = 321; +pub static RPL_LIST: u16 = 322; +pub static RPL_LISTEND: u16 = 323; +pub static RPL_UNIQOPIS: u16 = 325; +pub static RPL_CHANNELMODEIS: u16 = 324; +pub static RPL_NOTOPIC: u16 = 331; +pub static RPL_TOPIC: u16 = 332; +pub static RPL_INVITING: u16 = 341; +pub static RPL_SUMMONING: u16 = 342; +pub static RPL_INVITELIST: u16 = 346; +pub static RPL_ENDOFINVITELIST: u16 = 347; +pub static RPL_EXCEPTLIST: u16 = 348; +pub static RPL_ENDOFEXCEPTLIST: u16 = 349; +pub static RPL_VERSION: u16 = 351; +pub static RPL_WHOREPLY: u16 = 352; +pub static RPL_ENDOFWHO: u16 = 315; +pub static RPL_NAMREPLY: u16 = 353; +pub static RPL_ENDOFNAMES: u16 = 366; +pub static RPL_LINKS: u16 = 364; +pub static RPL_ENDOFLINKS: u16 = 365; +pub static RPL_BANLIST: u16 = 367; +pub static RPL_ENDOFBANLIST: u16 = 368; +pub static RPL_INFO: u16 = 371; +pub static RPL_ENDOFINFO: u16 = 374; +pub static RPL_MOTDSTART: u16 = 375; +pub static RPL_MOTD: u16 = 372; +pub static RPL_ENDOFMOTD: u16 = 376; +pub static RPL_YOUREOPER: u16 = 381; +pub static RPL_REHASHING: u16 = 382; +pub static RPL_YOURESERVICE: u16 = 383; +pub static RPL_TIME: u16 = 391; +pub static RPL_USERSSTART: u16 = 392; +pub static RPL_USERS: u16 = 393; +pub static RPL_ENDOFUSERS: u16 = 394; +pub static RPL_NOUSERS: u16 = 395; +pub static RPL_TRACELINK: u16 = 200; +pub static RPL_TRACECONNECTING: u16 = 201; +pub static RPL_TRACEHANDSHAKE: u16 = 202; +pub static RPL_TRACEUNKNOWN: u16 = 203; +pub static RPL_TRACEOPERATOR: u16 = 204; +pub static RPL_TRACEUSER: u16 = 205; +pub static RPL_TRACESERVER: u16 = 206; +pub static RPL_TRACESERVICE: u16 = 207; +pub static RPL_TRACENEWTYPE: u16 = 208; +pub static RPL_TRACECLASS: u16 = 209; +pub static RPL_TRACERECONNECT: u16 = 210; +pub static RPL_TRACELOG: u16 = 261; +pub static RPL_TRACEEND: u16 = 262; +pub static RPL_STATSLINKINFO: u16 = 211; +pub static RPL_STATSCOMMANDS: u16 = 212; +pub static RPL_ENDOFSTATS: u16 = 219; +pub static RPL_STATSUPTIME: u16 = 242; +pub static RPL_STATSOLINE: u16 = 243; +pub static RPL_UMODEIS: u16 = 221; +pub static RPL_SERVLIST: u16 = 234; +pub static RPL_SERVLISTEND: u16 = 235; +pub static RPL_LUSERCLIENT: u16 = 251; +pub static RPL_LUSEROP: u16 = 252; +pub static RPL_LUSERUNKNOWN: u16 = 253; +pub static RPL_LUSERCHANNELS: u16 = 254; +pub static RPL_LUSERME: u16 = 255; +pub static RPL_ADMINME: u16 = 256; +pub static RPL_ADMINLOC1: u16 = 257; +pub static RPL_ADMINLOC2: u16 = 258; +pub static RPL_ADMINEMAIL: u16 = 259; +pub static RPL_TRYAGAIN: u16 = 263; - // errors - ERR_NOSUCHNICK = 401, // No such nick/channel - ERR_NOSUCHSERVER = 402, // No such server - ERR_NOSUCHCHANNEL = 403, // No such channel - ERR_CANNOTSENDTOCHAN = 404, // Cannot send to channel - ERR_TOOMANYCHANNELS = 405, // You have joined too many channels - ERR_WASNOSUCHNICK = 406, // There was no such nickname - ERR_TOOMANYTARGETS = 407, // Duplicate recipients. No message delivered - ERR_NOSUCHSERVICE = 408, // No such service - ERR_NOORIGIN = 409, // No origin specified - ERR_NORECIPIENT = 411, // No recipient given - ERR_NOTEXTTOSEND = 412, // No text to send - ERR_NOTOPLEVEL = 413, // No toplevel domain specified - ERR_WILDTOPLEVEL = 414, // Wildcard in toplevel domain - ERR_BADMASK = 415, // Bad server/host mask - ERR_UNKNOWNCOMMAND = 421, // Unknown command - ERR_NOMOTD = 422, // MOTD file is missing - ERR_NOADMININFO = 423, // No administrative info available - ERR_FILEERROR = 424, // File error - ERR_NONICKNAMEGIVEN = 431, // No nickname given - ERR_ERRONEUSNICKNAME = 432, // Erroneus nickname - ERR_NICKNAMEINUSE = 433, // Nickname is already in use - ERR_NICKCOLLISION = 436, // Nickname collision KILL - ERR_UNAVAILRESOURCE = 437, // Nick/channel is temporarily unavailable - ERR_USERNOTINCHANNEL = 441, // They aren't on that channel - ERR_NOTONCHANNEL = 442, // You're not on that channel - ERR_USERONCHANNEL = 443, // User is already on channel - ERR_NOLOGIN = 444, // User not logged in - ERR_SUMMONDISABLED = 445, // SUMMON has been disabled - ERR_USERSDISABLED = 446, // USERS has been disabled - ERR_NOTREGISTERED = 451, // You have not registered - ERR_NEEDMOREPARAMS = 461, // Not enough parameters - ERR_ALREADYREGISTERED = 462, // You may not reregister - ERR_NOPERMFORHOST = 463, // Your host isn't among the privileged - ERR_PASSWDMISMATCH = 464, // Password incorrect - ERR_YOUREBANNEDCREEP = 465, // You are banned from this server - ERR_YOUWILLBEBANNED = 466, - ERR_KEYSET = 467, // Channel key already set - ERR_CHANNELISFULL = 471, // Cannot join channel (+l) - ERR_UNKNOWNMODE = 472, // Unknown mode char - ERR_INVITEONLYCHAN = 473, // Cannot join channel (+i) - ERR_BANNEDFROMCHAN = 474, // Cannot join channel (+b) - ERR_BADCHANNELKEY = 475, // Cannot join channel (+k) - ERR_BADCHANMASK = 476, // Bad channel mask - ERR_NOCHANMODES = 477, // Channel doesn't support modes - ERR_BANLISTFULL = 478, // Channel list is full - ERR_NOPRIVILEGES = 481, // Permission denied- You're not an IRC operator - ERR_CHANOPRIVSNEEDED = 482, // You're not channel operator - ERR_CANTKILLSERVER = 483, // You can't kill a server! - ERR_RESTRICTED = 484, // Your connection is restricted! - ERR_UNIQOPPRIVSNEEDED = 485, // You're not the original channel operator - ERR_NOOPERHOST = 491, // No O-lines for your host - ERR_UMODEUNKNOWNFLAG = 501, // Unknown MODE flag - ERR_USERSDONTMATCH = 502, // Can't change mode for other users +// errors +pub static ERR_NOSUCHNICK: u16 = 401; // No such nick/channel +pub static ERR_NOSUCHSERVER: u16 = 402; // No such server +pub static ERR_NOSUCHCHANNEL: u16 = 403; // No such channel +pub static ERR_CANNOTSENDTOCHAN: u16 = 404; // Cannot send to channel +pub static ERR_TOOMANYCHANNELS: u16 = 405; // You have joined too many channels +pub static ERR_WASNOSUCHNICK: u16 = 406; // There was no such nickname +pub static ERR_TOOMANYTARGETS: u16 = 407; // Duplicate recipients. No message delivered +pub static ERR_NOSUCHSERVICE: u16 = 408; // No such service +pub static ERR_NOORIGIN: u16 = 409; // No origin specified +pub static ERR_NORECIPIENT: u16 = 411; // No recipient given +pub static ERR_NOTEXTTOSEND: u16 = 412; // No text to send +pub static ERR_NOTOPLEVEL: u16 = 413; // No toplevel domain specified +pub static ERR_WILDTOPLEVEL: u16 = 414; // Wildcard in toplevel domain +pub static ERR_BADMASK: u16 = 415; // Bad server/host mask +pub static ERR_UNKNOWNCOMMAND: u16 = 421; // Unknown command +pub static ERR_NOMOTD: u16 = 422; // MOTD file is missing +pub static ERR_NOADMININFO: u16 = 423; // No administrative info available +pub static ERR_FILEERROR: u16 = 424; // File error +pub static ERR_NONICKNAMEGIVEN: u16 = 431; // No nickname given +pub static ERR_ERRONEUSNICKNAME: u16 = 432; // Erroneus nickname +pub static ERR_NICKNAMEINUSE: u16 = 433; // Nickname is already in use +pub static ERR_NICKCOLLISION: u16 = 436; // Nickname collision KILL +pub static ERR_UNAVAILRESOURCE: u16 = 437; // Nick/channel is temporarily unavailable +pub static ERR_USERNOTINCHANNEL: u16 = 441; // They aren't on that channel +pub static ERR_NOTONCHANNEL: u16 = 442; // You're not on that channel +pub static ERR_USERONCHANNEL: u16 = 443; // User is already on channel +pub static ERR_NOLOGIN: u16 = 444; // User not logged in +pub static ERR_SUMMONDISABLED: u16 = 445; // SUMMON has been disabled +pub static ERR_USERSDISABLED: u16 = 446; // USERS has been disabled +pub static ERR_NOTREGISTERED: u16 = 451; // You have not registered +pub static ERR_NEEDMOREPARAMS: u16 = 461; // Not enough parameters +pub static ERR_ALREADYREGISTERED: u16 = 462; // You may not reregister +pub static ERR_NOPERMFORHOST: u16 = 463; // Your host isn't among the privileged +pub static ERR_PASSWDMISMATCH: u16 = 464; // Password incorrect +pub static ERR_YOUREBANNEDCREEP: u16 = 465; // You are banned from this server +pub static ERR_YOUWILLBEBANNED: u16 = 466; +pub static ERR_KEYSET: u16 = 467; // Channel key already set +pub static ERR_CHANNELISFULL: u16 = 471; // Cannot join channel (+l) +pub static ERR_UNKNOWNMODE: u16 = 472; // Unknown mode char +pub static ERR_INVITEONLYCHAN: u16 = 473; // Cannot join channel (+i) +pub static ERR_BANNEDFROMCHAN: u16 = 474; // Cannot join channel (+b) +pub static ERR_BADCHANNELKEY: u16 = 475; // Cannot join channel (+k) +pub static ERR_BADCHANMASK: u16 = 476; // Bad channel mask +pub static ERR_NOCHANMODES: u16 = 477; // Channel doesn't support modes +pub static ERR_BANLISTFULL: u16 = 478; // Channel list is full +pub static ERR_NOPRIVILEGES: u16 = 481; // Permission denied- You're not an IRC operator +pub static ERR_CHANOPRIVSNEEDED: u16 = 482; // You're not channel operator +pub static ERR_CANTKILLSERVER: u16 = 483; // You can't kill a server! +pub static ERR_RESTRICTED: u16 = 484; // Your connection is restricted! +pub static ERR_UNIQOPPRIVSNEEDED: u16 = 485; // You're not the original channel operator +pub static ERR_NOOPERHOST: u16 = 491; // No O-lines for your host +pub static ERR_UMODEUNKNOWNFLAG: u16 = 501; // Unknown MODE flag +pub static ERR_USERSDONTMATCH: u16 = 502; // Can't change mode for other users - //unused - RPL_SERVICEINFO = 231, - RPL_ENDOFSERVICES = 232, - RPL_SERVICE = 233, - RPL_NONE = 300, - RPL_WHOISCHANOP = 316, - RPL_KILLDONE = 361, - RPL_CLOSING = 362, - RPL_CLOSEEND = 363, - RPL_INFOSTART = 373, - RPL_MYPORTIS = 384, - RPL_STATSCLINE = 213, - RPL_STATSNLINE = 214, - RPL_STATSILINE = 215, - RPL_STATSKLINE = 216, - RPL_STATSQLINE = 217, - RPL_STATSYLINE = 218, - RPL_STATSVLINE = 240, - RPL_STATSLLINE = 241, - RPL_STATSHLINE = 244, - RPL_STATSPING = 246, - RPL_STATSBLINE = 247, - RPL_STATSDLINE = 250, - ERR_NOSERVICEHOST = 492, +//unused +pub static RPL_SERVICEINFO: u16 = 231; +pub static RPL_ENDOFSERVICES: u16 = 232; +pub static RPL_SERVICE: u16 = 233; +pub static RPL_NONE: u16 = 300; +pub static RPL_WHOISCHANOP: u16 = 316; +pub static RPL_KILLDONE: u16 = 361; +pub static RPL_CLOSING: u16 = 362; +pub static RPL_CLOSEEND: u16 = 363; +pub static RPL_INFOSTART: u16 = 373; +pub static RPL_MYPORTIS: u16 = 384; +pub static RPL_STATSCLINE: u16 = 213; +pub static RPL_STATSNLINE: u16 = 214; +pub static RPL_STATSILINE: u16 = 215; +pub static RPL_STATSKLINE: u16 = 216; +pub static RPL_STATSQLINE: u16 = 217; +pub static RPL_STATSYLINE: u16 = 218; +pub static RPL_STATSVLINE: u16 = 240; +pub static RPL_STATSLLINE: u16 = 241; +pub static RPL_STATSHLINE: u16 = 244; +pub static RPL_STATSPING: u16 = 246; +pub static RPL_STATSBLINE: u16 = 247; +pub static RPL_STATSDLINE: u16 = 250; +pub static ERR_NOSERVICEHOST: u16 = 492; - // guesses - RPL_TOPICDATE = 333, // date the topic was set, in seconds since the epoch - ERR_MSGFORBIDDEN = 505, // freenode blocking privmsg from unreged users -} +// guesses +pub static RPL_TOPICDATE: u16 = 333; // date the topic was set, in seconds since the epoch +pub static ERR_MSGFORBIDDEN: u16 = 505; // freenode blocking privmsg from unreged users #[deriving(PartialEq, Eq, Show)] -enum Reply { - KnownReply(ReplyId), - UnknownReply(i32), -} +pub struct Reply(pub u16); impl FromStr for Reply { fn from_str (s: &str) -> Option { - // XXX match from_str(s) { - Some(i) => Some(UnknownReply(i)), + Some(i) => Some(Reply(i)), None => None, } } -- cgit v1.2.3