From 144453c692f4301058c09cc99d9bea42560aacca Mon Sep 17 00:00:00 2001 From: David Westgate Date: Sun, 19 Nov 2023 19:03:59 -0800 Subject: [PATCH] add lib, partition both application files, c-line input --- Cargo.lock | 7 +++++++ src/client.rs | 4 ++++ src/lib.rs | 19 +++++++++++++++++++ src/main.rs | 30 ++++++++++++++++++++++++++++-- src/server.rs | 4 ++++ 5 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 Cargo.lock create mode 100644 src/client.rs create mode 100644 src/lib.rs create mode 100644 src/server.rs diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..23ee3c1 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "rust-irc" +version = "0.1.0" diff --git a/src/client.rs b/src/client.rs new file mode 100644 index 0000000..4628d37 --- /dev/null +++ b/src/client.rs @@ -0,0 +1,4 @@ +pub fn start() { + println!("Starting the IRC client"); + todo!(); +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..a7a0838 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,19 @@ +pub mod codes { + pub mod client { + pub const JOIN_ROOM: u8 = 0x01; + pub const JOIN_SERVER: u8 = 0x02; + pub const LEAVE_ROOM: u8 = 0x03; + pub const LIST_ROOMS: u8 = 0x04; + pub const SEND_MESSAGE: u8 = 0x05; + } + pub const KEEP_ALIVE: u8 = 0x0C; + pub const RESPONSE: u8 = 0x0D; + pub const RESPONSE_OK: u8 = 0x0E; + pub const ERROR: u8 = 0x0F; + pub const QUIT: u8 = 0x0B; + pub mod error { + pub const INVALID_ROOM: u8 = 0x10; + pub const NICKNAME_COLLISION: u8 = 0x11; + pub const SERVER_FULL: u8 = 0x12; + } +} diff --git a/src/main.rs b/src/main.rs index e7a11a9..9d4d8c9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,29 @@ -fn main() { - println!("Hello, world!"); +use std::env; + +mod client; +mod server; + +fn parsechar(s: &str) -> char { + s.parse().unwrap_or_else(|_| info()) +} + +fn info() -> ! { + println!("Start client: cargro run c\nStart server: cargo run s"); + std::process::exit(1) +} + +fn main() { + let args: Vec = env::args().skip(1).collect(); + if args.len() == 1 { + let input: char = parsechar(&args[0]); + if input == 'c' { + client::start(); + } else if input == 's' { + server::start(); + } else { + info(); + } + } else { + info(); + } } diff --git a/src/server.rs b/src/server.rs new file mode 100644 index 0000000..1ce3f5b --- /dev/null +++ b/src/server.rs @@ -0,0 +1,4 @@ +pub fn start() { + println!("Starting the IRC Server"); + todo!(); +}