Added documentation for Wrapper and utility functions.

This commit is contained in:
Aaron Weiss 2014-11-03 04:19:12 -05:00
parent b3e0e2ea08
commit 039049ab32
3 changed files with 17 additions and 5 deletions

View file

@ -19,8 +19,8 @@ fn main() {
channels: vec!("#vana".into_string()), channels: vec!("#vana".into_string()),
options: HashMap::new(), options: HashMap::new(),
}; };
let ircserver = IrcServer::from_config(config).unwrap(); let irc_server = IrcServer::from_config(config).unwrap();
let server = Wrapper::new(&ircserver); let server = Wrapper::new(&irc_server);
server.identify().unwrap(); server.identify().unwrap();
for message in server.iter() { for message in server.iter() {
print!("{}", message.into_string()); print!("{}", message.into_string());

View file

@ -71,6 +71,7 @@ impl<'a, T, U> IrcServer<'a, T, U> where T: IrcWriter, U: IrcReader {
} }
/// Handles messages internally for basic bot functionality /// Handles messages internally for basic bot functionality
#[experimental]
fn handle_message(&self, message: &Message) { fn handle_message(&self, message: &Message) {
if message.command[] == "PING" { if message.command[] == "PING" {
self.send(PONG(message.suffix.as_ref().unwrap()[], None)).unwrap(); self.send(PONG(message.suffix.as_ref().unwrap()[], None)).unwrap();

View file

@ -5,9 +5,10 @@ use std::io::IoResult;
use data::command::{Command, JOIN, KILL, NICK, OPER, PONG, PRIVMSG, SAMODE, SANICK, USER}; use data::command::{Command, JOIN, KILL, NICK, OPER, PONG, PRIVMSG, SAMODE, SANICK, USER};
use data::config::Config; use data::config::Config;
use data::kinds::{IrcReader, IrcWriter}; use data::kinds::{IrcReader, IrcWriter};
use server::{IrcServer, Server, ServerIterator}; use server::{Server, ServerIterator};
/// Functionality-providing wrapper for Server
#[experimental]
pub struct Wrapper<'a, T, U> where T: IrcWriter, U: IrcReader { pub struct Wrapper<'a, T, U> where T: IrcWriter, U: IrcReader {
server: &'a Server<'a, T, U> + 'a server: &'a Server<'a, T, U> + 'a
} }
@ -27,47 +28,57 @@ impl<'a, T, U> Server<'a, T, U> for Wrapper<'a, T, U> where T: IrcWriter, U: Irc
} }
impl<'a, T, U> Wrapper<'a, T, U> where T: IrcWriter, U: IrcReader { impl<'a, T, U> Wrapper<'a, T, U> where T: IrcWriter, U: IrcReader {
pub fn new(server: &'a IrcServer<'a, T, U>) -> Wrapper<'a, T, U> { /// Creates a new Wrapper from the given Server
#[experimental]
pub fn new(server: &'a Server<'a, T, U>) -> Wrapper<'a, T, U> {
Wrapper { server: server } Wrapper { server: server }
} }
/// Sends a NICK and USER to identify /// Sends a NICK and USER to identify
#[experimental]
pub fn identify(&self) -> IoResult<()> { pub fn identify(&self) -> IoResult<()> {
try!(self.server.send(NICK(self.server.config().nickname[]))); try!(self.server.send(NICK(self.server.config().nickname[])));
self.server.send(USER(self.server.config().username[], "0", self.server.config().realname[])) self.server.send(USER(self.server.config().username[], "0", self.server.config().realname[]))
} }
/// Sends a PONG with the specified message /// Sends a PONG with the specified message
#[experimental]
pub fn send_pong(&self, msg: &str) -> IoResult<()> { pub fn send_pong(&self, msg: &str) -> IoResult<()> {
self.server.send(PONG(msg, None)) self.server.send(PONG(msg, None))
} }
/// Joins the specified channel or chanlist /// Joins the specified channel or chanlist
#[experimental]
pub fn send_join(&self, chanlist: &str) -> IoResult<()> { pub fn send_join(&self, chanlist: &str) -> IoResult<()> {
self.server.send(JOIN(chanlist, None)) self.server.send(JOIN(chanlist, None))
} }
/// Attempts to oper up using the specified username and password /// Attempts to oper up using the specified username and password
#[experimental]
pub fn send_oper(&self, username: &str, password: &str) -> IoResult<()> { pub fn send_oper(&self, username: &str, password: &str) -> IoResult<()> {
self.server.send(OPER(username, password)) self.server.send(OPER(username, password))
} }
/// Sends a message to the specified target /// Sends a message to the specified target
#[experimental]
pub fn send_privmsg(&self, target: &str, message: &str) -> IoResult<()> { pub fn send_privmsg(&self, target: &str, message: &str) -> IoResult<()> {
self.server.send(PRIVMSG(target, message)) self.server.send(PRIVMSG(target, message))
} }
/// Kills the target with the provided message /// Kills the target with the provided message
#[experimental]
pub fn send_kill(&self, target: &str, message: &str) -> IoResult<()> { pub fn send_kill(&self, target: &str, message: &str) -> IoResult<()> {
self.server.send(KILL(target, message)) self.server.send(KILL(target, message))
} }
/// Changes the mode of the target /// Changes the mode of the target
#[experimental]
pub fn send_samode(&self, target: &'a str, mode: &'a str, modeparams: Option<&'a str>) -> IoResult<()> { pub fn send_samode(&self, target: &'a str, mode: &'a str, modeparams: Option<&'a str>) -> IoResult<()> {
self.server.send(SAMODE(target, mode, modeparams)) self.server.send(SAMODE(target, mode, modeparams))
} }
/// Forces a user to change from the old nickname to the new nickname /// Forces a user to change from the old nickname to the new nickname
#[experimental]
pub fn send_sanick(&self, old_nick: &str, new_nick: &str) -> IoResult<()> { pub fn send_sanick(&self, old_nick: &str, new_nick: &str) -> IoResult<()> {
self.server.send(SANICK(old_nick, new_nick)) self.server.send(SANICK(old_nick, new_nick))
} }