From 2505cc57842f0ef4c6d81b96941113b276ee2c11 Mon Sep 17 00:00:00 2001 From: Aaron Weiss Date: Fri, 24 Apr 2015 02:10:05 -0400 Subject: [PATCH] Removed stability attributes. --- src/client/conn.rs | 18 ----- src/client/data/command.rs | 72 ------------------ src/client/data/config.rs | 35 --------- src/client/data/message.rs | 11 --- src/client/data/mod.rs | 4 - src/client/data/response.rs | 148 +----------------------------------- src/client/data/user.rs | 15 ---- src/client/mod.rs | 3 - src/client/server/mod.rs | 20 ----- src/client/server/utils.rs | 24 ------ src/lib.rs | 1 - src/server/mod.rs | 1 - 12 files changed, 3 insertions(+), 349 deletions(-) diff --git a/src/client/conn.rs b/src/client/conn.rs index be85dd5..740aea1 100644 --- a/src/client/conn.rs +++ b/src/client/conn.rs @@ -1,5 +1,4 @@ //! Thread-safe connections on IrcStreams. -#![stable] #[cfg(feature = "ssl")] use std::error::Error as StdError; use std::io::prelude::*; use std::io::{BufReader, BufWriter, Result}; @@ -16,22 +15,18 @@ use client::data::message::ToMessage; #[cfg(feature = "ssl")] use openssl::ssl::error::SslError; /// A thread-safe connection. -#[stable] pub struct Connection { reader: Mutex, writer: Mutex, } /// A Connection over a buffered NetStream. -#[stable] pub type NetConnection = Connection, BufWriter>; /// An internal type type NetReadWritePair = (BufReader, BufWriter); -#[stable] impl Connection, BufWriter> { /// Creates a thread-safe TCP connection to the specified server. - #[stable] pub fn connect(host: &str, port: u16) -> Result { let (reader, writer) = try!(Connection::connect_internal(host, port)); Ok(Connection::new(reader, writer)) @@ -46,7 +41,6 @@ impl Connection, BufWriter> { /// Creates a thread-safe TCP connection to the specified server over SSL. /// If the library is compiled without SSL support, this method panics. - #[stable] pub fn connect_ssl(host: &str, port: u16) -> Result { let (reader, writer) = try!(Connection::connect_ssl_internal(host, port)); Ok(Connection::new(reader, writer)) @@ -69,7 +63,6 @@ impl Connection, BufWriter> { } /// Reconnects to the specified server, dropping the current connection. - #[stable] pub fn reconnect(&self, host: &str, port: u16) -> Result<()> { let use_ssl = match self.reader.lock().unwrap().get_ref() { &NetStream::UnsecuredTcpStream(_) => false, @@ -106,10 +99,8 @@ impl Connection, BufWriter> { */ } -#[stable] impl Connection { /// Creates a new connection from an IrcReader and an IrcWriter. - #[stable] pub fn new(reader: T, writer: U) -> Connection { Connection { reader: Mutex::new(reader), @@ -118,7 +109,6 @@ impl Connection { } /// Sends a Message over this connection. - #[stable] #[cfg(feature = "encode")] pub fn send(&self, to_msg: M, encoding: &str) -> Result<()> { let encoding = match encoding_from_whatwg_label(encoding) { @@ -140,7 +130,6 @@ impl Connection { } /// Sends a message over this connection. - #[stable] #[cfg(not(feature = "encode"))] pub fn send(&self, to_msg: M) -> Result<()> { let mut writer = self.writer.lock().unwrap(); @@ -149,7 +138,6 @@ impl Connection { } /// Receives a single line from this connection. - #[stable] #[cfg(feature = "encoding")] pub fn recv(&self, encoding: &str) -> Result { let encoding = match encoding_from_whatwg_label(encoding) { @@ -171,7 +159,6 @@ impl Connection { } /// Receives a single line from this connection. - #[stable] #[cfg(not(feature = "encoding"))] pub fn recv(&self) -> Result { let mut ret = String::new(); @@ -184,13 +171,11 @@ impl Connection { } /// Acquires the Reader lock. - #[stable] pub fn reader<'a>(&'a self) -> MutexGuard<'a, T> { self.reader.lock().unwrap() } /// Acquires the Writer lock. - #[stable] pub fn writer<'a>(&'a self) -> MutexGuard<'a, U> { self.writer.lock().unwrap() } @@ -208,15 +193,12 @@ fn ssl_to_io(res: StdResult) -> Result { } /// An abstraction over different networked streams. -#[stable] pub enum NetStream { /// An unsecured TcpStream. - #[stable] UnsecuredTcpStream(TcpStream), /// An SSL-secured TcpStream. /// This is only available when compiled with SSL support. #[cfg(feature = "ssl")] - #[stable] SslTcpStream(SslStream), } diff --git a/src/client/data/command.rs b/src/client/data/command.rs index 77c623e..2664bb5 100644 --- a/src/client/data/command.rs +++ b/src/client/data/command.rs @@ -1,5 +1,4 @@ //! Enumeration of all available client commands. -#![stable] use std::io::{Error, ErrorKind, Result}; use std::result::Result as StdResult; use std::str::FromStr; @@ -9,202 +8,144 @@ use client::data::message::{Message, ToMessage}; /// also includes commands from the /// [capabilities extension](https://tools.ietf.org/html/draft-mitchell-irc-capabilities-01). /// Additionally, this includes some common additional commands from popular IRCds. -#[stable] #[derive(Debug, PartialEq)] pub enum Command { // 3.1 Connection Registration /// PASS :password - #[stable] PASS(String), /// NICK :nickname - #[stable] NICK(String), /// USER user mode * :realname - #[stable] USER(String, String, String), /// OPER name :password - #[stable] OPER(String, String), /// MODE nickname modes /// MODE channel modes [modeparams] - #[stable] MODE(String, String, Option), /// SERVICE nickname reserved distribution type reserved :info - #[stable] SERVICE(String, String, String, String, String, String), /// QUIT :comment - #[stable] QUIT(Option), /// SQUIT server :comment - #[stable] SQUIT(String, String), // 3.2 Channel operations /// JOIN chanlist [chankeys] - #[stable] JOIN(String, Option), /// PART chanlist :[comment] - #[stable] PART(String, Option), // MODE is already defined. // MODE(String, String, Option), /// TOPIC channel :[topic] - #[stable] TOPIC(String, Option), /// NAMES [chanlist :[target]] - #[stable] NAMES(Option, Option), /// LIST [chanlist :[target]] - #[stable] LIST(Option, Option), /// INVITE nickname channel - #[stable] INVITE(String, String), /// KICK chanlist userlist :[comment] - #[stable] KICK(String, String, Option), // 3.3 Sending messages /// PRIVMSG msgtarget :message - #[stable] PRIVMSG(String, String), /// NOTICE msgtarget :message - #[stable] NOTICE(String, String), // 3.4 Server queries and commands /// MOTD :[target] - #[stable] MOTD(Option), /// LUSERS [mask :[target]] - #[stable] LUSERS(Option, Option), /// VERSION :[target] - #[stable] VERSION(Option), /// STATS [query :[target]] - #[stable] STATS(Option, Option), /// LINKS [[remote server] server :mask] - #[stable] LINKS(Option, Option), /// TIME :[target] - #[stable] TIME(Option), /// CONNECT target server port :[remote server] - #[stable] CONNECT(String, String, Option), /// TRACE :[target] - #[stable] TRACE(Option), /// ADMIN :[target] - #[stable] ADMIN(Option), /// INFO :[target] - #[stable] INFO(Option), // 3.5 Service Query and Commands /// SERVLIST [mask :[type]] - #[stable] SERVLIST(Option, Option), /// SQUERY servicename text - #[stable] SQUERY(String, String), // 3.6 User based queries /// WHO [mask ["o"]] - #[stable] WHO(Option, Option), /// WHOIS [target] masklist - #[stable] WHOIS(Option, String), /// WHOWAS nicklist [count :[target]] - #[stable] WHOWAS(String, Option, Option), // 3.7 Miscellaneous messages /// KILL nickname :comment - #[stable] KILL(String, String), /// PING server1 :[server2] - #[stable] PING(String, Option), /// PONG server :[server2] - #[stable] PONG(String, Option), /// ERROR :message - #[stable] ERROR(String), // 4 Optional Features /// AWAY :[message] - #[stable] AWAY(Option), /// REHASH - #[stable] REHASH, /// DIE - #[stable] DIE, /// RESTART - #[stable] RESTART, /// SUMMON user [target :[channel]] - #[stable] SUMMON(String, Option, Option), /// USERS :[target] - #[stable] USERS(Option), /// WALLOPS :Text to be sent - #[stable] WALLOPS(String), /// USERHOST space-separated nicklist - #[stable] USERHOST(Vec), /// ISON space-separated nicklist - #[stable] ISON(Vec), // Non-RFC commands from InspIRCd /// SAJOIN nickname channel - #[stable] SAJOIN(String, String), /// SAMODE target modes [modeparams] - #[stable] SAMODE(String, String, Option), /// SANICK old nickname new nickname - #[stable] SANICK(String, String), /// SAPART nickname :comment - #[stable] SAPART(String, String), /// SAQUIT nickname :comment - #[stable] SAQUIT(String, String), /// NICKSERV message - #[stable] NICKSERV(String), /// CHANSERV message - #[stable] CHANSERV(String), /// OPERSERV message - #[stable] OPERSERV(String), /// BOTSERV message - #[stable] BOTSERV(String), /// HOSTSERV message - #[stable] HOSTSERV(String), /// MEMOSERV message - #[stable] MEMOSERV(String), // Capabilities extension to IRCv3 /// CAP [*] COMMAND [*] :[param] - #[unstable = "Feature recently changed to hopefully be specification-compliant."] CAP(Option, CapSubCommand, Option, Option), } @@ -360,10 +301,8 @@ impl ToMessage for Command { } } -#[stable] impl Command { /// Converts a Message into a Command. - #[stable] pub fn from_message(m: &Message) -> Result { Ok(if let "PASS" = &m.command[..] { match m.suffix { @@ -1081,43 +1020,32 @@ impl Command { } /// Converts a potential Message result into a potential Command result. - #[unstable = "This feature is still relatively new."] pub fn from_message_io(m: Result) -> Result { m.and_then(|msg| Command::from_message(&msg)) } } /// A list of all of the subcommands for the capabilities extension. -#[stable] #[derive(Clone, Copy, Debug, PartialEq)] pub enum CapSubCommand { /// Requests a list of the server's capabilities. - #[stable] LS, /// Requests a list of the server's capabilities. - #[stable] LIST, /// Requests specific capabilities blindly. - #[stable] REQ, /// Acknowledges capabilities. - #[stable] ACK, /// Does not acknowledge certain capabilities. - #[stable] NAK, /// Requests that the server clears the capabilities of this client. - #[stable] CLEAR, /// Ends the capability negotiation before registration. - #[stable] END } -#[stable] impl CapSubCommand { /// Gets the string that corresponds to this subcommand. - #[stable] pub fn to_str(&self) -> &str { match self { &CapSubCommand::LS => "LS", diff --git a/src/client/data/config.rs b/src/client/data/config.rs index a883cd9..3455a62 100644 --- a/src/client/data/config.rs +++ b/src/client/data/config.rs @@ -1,5 +1,4 @@ //! JSON configuration files using libserialize. -#![stable] use std::borrow::ToOwned; use std::collections::HashMap; use std::fs::File; @@ -10,61 +9,43 @@ use rustc_serialize::json::decode; /// Configuration data. #[derive(Clone, RustcDecodable, Default, PartialEq, Debug)] -#[stable] pub struct Config { /// A list of the owners of the bot by nickname. - #[stable] pub owners: Option>, /// The bot's nickname. - #[stable] pub nickname: Option, /// The bot's NICKSERV password. - #[stable] pub nick_password: Option, /// Alternative nicknames for the bots, if the default is taken. - #[stable] pub alt_nicks: Option>, /// The bot's username. - #[stable] pub username: Option, /// The bot's real name. - #[stable] pub realname: Option, /// The server to connect to. - #[stable] pub server: Option, /// The port to connect on. - #[stable] pub port: Option, /// The password to connect to the server. - #[stable] pub password: Option, /// Whether or not to use SSL. /// Bots will automatically panic if this is enabled without SSL support. - #[stable] pub use_ssl: Option, /// The encoding type used for this connection. /// This is typically UTF-8, but could be something else. - #[stable] pub encoding: Option, /// A list of channels to join on connection. - #[stable] pub channels: Option>, /// User modes to set on connect. Example: "+RB-x" - #[unstable] pub umodes: Option, /// The text that'll be sent in response to CTCP USERINFO requests. - #[stable] pub user_info: Option, /// A map of additional options to be stored in config. - #[stable] pub options: Option>, } -#[stable] impl Config { /// Loads a JSON configuration from the desired path. - #[stable] pub fn load(path: &Path) -> Result { let mut file = try!(File::open(path)); let mut data = String::new(); @@ -75,34 +56,29 @@ impl Config { } /// Loads a JSON configuration using the string as a UTF-8 path. - #[stable] pub fn load_utf8(path: &str) -> Result { Config::load(Path::new(path)) } /// Determines whether or not the nickname provided is the owner of the bot. - #[stable] pub fn is_owner(&self, nickname: &str) -> bool { self.owners.as_ref().map(|o| o.contains(&nickname.to_string())).unwrap() } /// Gets the nickname specified in the configuration. /// This will panic if not specified. - #[stable] pub fn nickname(&self) -> &str { self.nickname.as_ref().map(|s| &s[..]).unwrap() } /// Gets the bot's nickserv password specified in the configuration. /// This defaults to an empty string when not specified. - #[stable] pub fn nick_password(&self) -> &str { self.nick_password.as_ref().map(|s| &s[..]).unwrap_or("") } /// Gets the alternate nicknames specified in the configuration. /// This defaults to an empty vector when not specified. - #[stable] pub fn get_alternate_nicknames(&self) -> Vec<&str> { self.alt_nicks.as_ref().map(|v| v.iter().map(|s| &s[..]).collect()).unwrap_or(vec![]) } @@ -110,28 +86,24 @@ impl Config { /// Gets the username specified in the configuration. /// This defaults to the user's nickname when not specified. - #[stable] pub fn username(&self) -> &str { self.username.as_ref().map(|s| &s[..]).unwrap_or(self.nickname()) } /// Gets the real name specified in the configuration. /// This defaults to the user's nickname when not specified. - #[stable] pub fn real_name(&self) -> &str { self.realname.as_ref().map(|s| &s[..]).unwrap_or(self.nickname()) } /// Gets the address of the server specified in the configuration. /// This panics when not specified. - #[stable] pub fn server(&self) -> &str { self.server.as_ref().map(|s| &s[..]).unwrap() } /// Gets the port of the server specified in the configuration. /// This defaults to 6667 (or 6697 if use_ssl is specified as true) when not specified. - #[stable] pub fn port(&self) -> u16 { self.port.as_ref().map(|p| *p).unwrap_or(if self.use_ssl() { 6697 @@ -142,42 +114,36 @@ impl Config { /// Gets the server password specified in the configuration. /// This defaults to a blank string when not specified. - #[stable] pub fn password(&self) -> &str { self.password.as_ref().map(|s| &s[..]).unwrap_or("") } /// Gets whether or not to use SSL with this connection. /// This defaults to false when not specified. - #[stable] pub fn use_ssl(&self) -> bool { self.use_ssl.as_ref().map(|u| *u).unwrap_or(false) } /// Gets the encoding to use for this connection. This requires the encode feature to work. /// This defaults to UTF-8 when not specified. - #[stable] pub fn encoding(&self) -> &str { self.encoding.as_ref().map(|s| &s[..]).unwrap_or("UTF-8") } /// Gets the channels to join upon connection. /// This defaults to an empty vector if it's not specified. - #[stable] pub fn channels(&self) -> Vec<&str> { self.channels.as_ref().map(|v| v.iter().map(|s| &s[..]).collect()).unwrap_or(vec![]) } /// Gets the user modes to set on connect specified in the configuration. /// This defaults to an empty string when not specified. - #[unstable = "Feature is still relatively new."] pub fn umodes(&self) -> &str { self.umodes.as_ref().map(|s| &s[..]).unwrap_or("") } /// Gets the string to be sent in response to CTCP USERINFO requests. /// This defaults to an empty string when not specified. - #[stable] pub fn user_info(&self) -> &str { self.user_info.as_ref().map(|s| &s[..]).unwrap_or("") } @@ -185,7 +151,6 @@ impl Config { /// Looks up the specified string in the options map. /// This uses indexing, and thus panics when the string is not present. /// This will also panic if used and there are no options. - #[stable] pub fn get_option(&self, option: &str) -> &str { self.options.as_ref().map(|o| &o[&option.to_owned()][..]).unwrap() } diff --git a/src/client/data/message.rs b/src/client/data/message.rs index b87dee3..be64b39 100644 --- a/src/client/data/message.rs +++ b/src/client/data/message.rs @@ -1,31 +1,23 @@ //! Messages to and from the server. -#![stable] use std::borrow::ToOwned; use std::str::FromStr; /// IRC Message data. -#[stable] #[derive(Clone, PartialEq, Debug)] pub struct Message { /// The message prefix (or source) as defined by [RFC 2812](http://tools.ietf.org/html/rfc2812). - #[stable] pub prefix: Option, /// The IRC command as defined by [RFC 2812](http://tools.ietf.org/html/rfc2812). - #[stable] pub command: String, /// The command arguments. - #[stable] pub args: Vec, /// The message suffix as defined by [RFC 2812](http://tools.ietf.org/html/rfc2812). /// This is the only part of the message that is allowed to contain spaces. - #[stable] pub suffix: Option, } -#[stable] impl Message { /// Creates a new Message. - #[stable] pub fn new(prefix: Option<&str>, command: &str, args: Option>, suffix: Option<&str>) -> Message { Message { @@ -37,13 +29,11 @@ impl Message { } /// Gets the nickname of the message source, if it exists. - #[stable] pub fn get_source_nickname(&self) -> Option<&str> { self.prefix.as_ref().and_then(|s| s.find('!').map(|i| &s[..i])) } /// Converts a Message into a String according to the IRC protocol. - #[stable] pub fn into_string(&self) -> String { let mut ret = String::new(); if let Some(ref prefix) = self.prefix { @@ -104,7 +94,6 @@ impl FromStr for Message { } /// A trait representing the ability to be converted into a Message. -#[stable] pub trait ToMessage { /// Converts this to a Message. fn to_message(&self) -> Message; diff --git a/src/client/data/mod.rs b/src/client/data/mod.rs index 5462963..b538b16 100644 --- a/src/client/data/mod.rs +++ b/src/client/data/mod.rs @@ -1,5 +1,4 @@ //! Data related to IRC functionality. -#![stable] pub use client::data::command::Command; pub use client::data::config::Config; @@ -9,15 +8,12 @@ pub use client::data::user::{AccessLevel, User}; pub mod kinds { //! Trait definitions of appropriate Writers and Buffers for use with this library. - #![stable] use std::io::prelude::*; /// Trait describing all possible Writers for this library. - #[stable] pub trait IrcWrite: Write + Sized + Send + 'static {} impl IrcWrite for T where T: Write + Sized + Send + 'static {} /// Trait describing all possible Readers for this library. - #[stable] pub trait IrcRead: BufRead + Sized + Send + 'static {} impl IrcRead for T where T: BufRead + Sized + Send + 'static {} } diff --git a/src/client/data/response.rs b/src/client/data/response.rs index ba45e2d..a3c4bb5 100644 --- a/src/client/data/response.rs +++ b/src/client/data/response.rs @@ -1,5 +1,4 @@ //! Enumeration of all the possible server responses. -#![stable] #![allow(non_camel_case_types)] use std::mem::transmute; use std::str::FromStr; @@ -9,437 +8,296 @@ use client::data::message::Message; /// All commands are documented with their expected form from the RFC. #[derive(Clone, Copy, Debug, PartialEq)] #[repr(u16)] -#[stable] pub enum Response { // Expected replies /// 001 Welcome to the Internet Relay Network !@ - #[stable] RPL_WELCOME = 001, /// 002 Your host is , running version - #[stable] RPL_YOURHOST = 002, /// 003 This server was created - #[stable] RPL_CREATED = 003, /// 004 available channel modes> - #[stable] RPL_MYINFO = 004, /// 005 Try server , port - #[stable] RPL_BOUNCE = 005, /// 302 :*1 *( " " ) - #[stable] RPL_USERHOST = 302, /// 303 :*1 *( " " ) - #[stable] RPL_ISON = 303, /// 301 : - #[stable] RPL_AWAY = 301, /// 305 :You are no longer marked as being away - #[stable] RPL_UNAWAY = 305, /// 306 :You have been marked as being away - #[stable] RPL_NOWAWAY = 306, /// 311 * : - #[stable] RPL_WHOISUSER = 311, /// 312 : - #[stable] RPL_WHOISSERVER = 312, /// 313 :is an IRC operator - #[stable] RPL_WHOISOPERATOR = 313, /// 317 :seconds idle - #[stable] RPL_WHOISIDLE = 317, /// 318 :End of WHOIS list - #[stable] RPL_ENDOFWHOIS = 318, /// 319 :*( ( "@" / "+" ) " " ) - #[stable] RPL_WHOISCHANNELS = 319, /// 314 * : - #[stable] RPL_WHOWASUSER = 314, /// 369 :End of WHOWAS - #[stable] RPL_ENDOFWHOWAS = 369, /// Obsolete. Not used. - #[stable] RPL_LISTSTART = 321, /// 322 <# visible> : - #[stable] RPL_LIST = 322, /// 323 :End of LIST - #[stable] RPL_LISTEND = 323, /// 325 - #[stable] RPL_UNIQOPIS = 325, /// 324 - #[stable] RPL_CHANNELMODEIS = 324, /// 331 :No topic is set - #[stable] RPL_NOTOPIC = 331, /// 332 : - #[stable] RPL_TOPIC = 332, /// 341 - #[stable] RPL_INVITING = 341, /// 342 :Summoning user to IRC - #[stable] RPL_SUMMONING = 342, /// 346 - #[stable] RPL_INVITELIST = 346, /// 347 :End of channel invite list - #[stable] RPL_ENDOFINVITELIST = 347, /// 348 - #[stable] RPL_EXCEPTLIST = 348, /// 349 :End of channel exception list - #[stable] - RPL_ENDOFEXECPTLIST = 349, + RPL_ENDOFEXCEPTLIST = 349, /// 351 . : - #[stable] RPL_VERSION = 351, /// 352 ( "H" / "G" > ["*"] [ ( "@" / "+" ) ] - #[stable] /// : - #[stable] RPL_WHOREPLY = 352, /// 315 :End of WHO list - #[stable] RPL_ENDOFWHO = 315, /// 353 ( "=" / "*" / "@" ) :[ "@" / "+" ] *( " " [ "@" / "+" ] ) - #[stable] RPL_NAMREPLY = 353, /// 366 :End of NAMES list - #[stable] RPL_ENDOFNAMES = 366, /// 364 : - #[stable] RPL_LINKS = 364, /// 365 :End of LINKS list - #[stable] RPL_ENDOFLINKS = 365, /// 367 - #[stable] RPL_BANLIST = 367, /// 368 :End of channel ban list - #[stable] RPL_ENDOFBANLIST = 368, /// 371 : - #[stable] RPL_INFO = 371, /// 374 :End of INFO list - #[stable] RPL_ENDOFINFO = 374, /// 375 :- Message of the day - - #[stable] RPL_MOTDSTART = 375, /// 372 :- - #[stable] RPL_MOTD = 372, /// 376 :End of MOTD command - #[stable] RPL_ENDOFMOTD = 376, /// 381 :You are now an IRC operator - #[stable] RPL_YOUREOPER = 381, /// 382 :Rehashing - #[stable] RPL_REHASHING = 382, /// 383 You are service - #[stable] RPL_YOURESERVICE = 383, /// 391 : - #[stable] RPL_TIME = 391, /// 392 :UserID Terminal Host - #[stable] RPL_USERSSTART = 392, /// 393 : - #[stable] RPL_USERS = 393, /// 394 :End of users - #[stable] RPL_ENDOFUSERS = 394, /// 395 :Nobody logged in - #[stable] RPL_NOUSERS = 395, /// 200 Link V /// - #[stable] RPL_TRACELINK = 200, /// 201 Try. - #[stable] RPL_TRACECONNECTING = 201, /// 202 H.S. - #[stable] RPL_TRACEHANDSHAKE = 202, /// 203 ???? [] - #[stable] RPL_TRACEUKNOWN = 203, /// 204 Oper - #[stable] RPL_TRACEOPERATOR = 204, /// 205 User - #[stable] RPL_TRACEUSER = 205, /// 206 Serv S C @ V - #[stable] RPL_TRACESERVER = 206, /// 207 Service - #[stable] RPL_TRACESERVICE = 207, /// 208 0 - #[stable] RPL_TRACENEWTYPE = 208, /// 209 Class - #[stable] RPL_TRACECLASS = 209, /// Unused. RPL_TRACERECONNECT = 210, /// 261 File - #[stable] RPL_TRACELOG = 261, /// 262 :End of TRACE - #[stable] RPL_TRACEEND = 262, /// 211 ///