-
Notifications
You must be signed in to change notification settings - Fork 51
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
o# This is a combination of 14 commits.
Start modularizing packet move header into its own chunk, include tests Move auto_respond as a class method Move packet into its own file rename "packet" to "message" Rename Response and Request to *Type to free up the names Added request and response, pretty clunky feeling though. How can I refactor this? Better consistency using "message" for the packet inside a Request/Response cleanup `use`s a bit more cleaning Cleanup before pull request Add tests Add response test Cargo fmt
- Loading branch information
1 parent
e1b04ce
commit 57ce239
Showing
14 changed files
with
697 additions
and
475 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
target | ||
Cargo.lock | ||
*.rs.bk |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,34 @@ | ||
extern crate coap; | ||
|
||
use std::io::ErrorKind; | ||
use coap::packet::*; | ||
use coap::CoAPClient; | ||
use coap::{CoAPClient, CoAPRequest, IsMessage, MessageType, CoAPOption}; | ||
|
||
fn main() { | ||
let addr = "127.0.0.1:5683"; | ||
let request = "test"; | ||
let addr = "127.0.0.1:5683"; | ||
let endpoint = "test"; | ||
|
||
let client = CoAPClient::new(addr).unwrap(); | ||
let mut packet = Packet::new(); | ||
packet.header.set_version(1); | ||
packet.header.set_type(PacketType::Confirmable); | ||
packet.header.set_code("0.01"); | ||
packet.header.set_message_id(1); | ||
packet.set_token(vec!(0x51, 0x55, 0x77, 0xE8)); | ||
packet.add_option(OptionType::UriPath, request.to_string().into_bytes()); | ||
client.send(&packet).unwrap(); | ||
println!("Client request: coap://{}/{}", addr, request); | ||
let client = CoAPClient::new(addr).unwrap(); | ||
let mut request = CoAPRequest::new(); | ||
request.set_version(1); | ||
request.set_type(MessageType::Confirmable); | ||
request.set_code("0.01"); | ||
request.set_message_id(1); | ||
request.set_token(vec![0x51, 0x55, 0x77, 0xE8]); | ||
request.add_option(CoAPOption::UriPath, endpoint.to_string().into_bytes()); | ||
client.send(&request).unwrap(); | ||
println!("Client request: coap://{}/{}", addr, endpoint); | ||
|
||
match client.receive() { | ||
Ok(response) => { | ||
println!("Server reply: {}", String::from_utf8(response.payload).unwrap()); | ||
}, | ||
Err(e) => { | ||
match e.kind() { | ||
ErrorKind::WouldBlock => println!("Request timeout"), // Unix | ||
ErrorKind::TimedOut => println!("Request timeout"), // Windows | ||
_ => println!("Request error: {:?}", e), | ||
} | ||
} | ||
} | ||
match client.receive() { | ||
Ok(response) => { | ||
println!("Server reply: {}", | ||
String::from_utf8(response.message.payload).unwrap()); | ||
} | ||
Err(e) => { | ||
match e.kind() { | ||
ErrorKind::WouldBlock => println!("Request timeout"), // Unix | ||
ErrorKind::TimedOut => println!("Request timeout"), // Windows | ||
_ => println!("Request error: {:?}", e), | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,28 @@ | ||
extern crate coap; | ||
|
||
use coap::packet::*; | ||
use coap::{CoAPServer, CoAPClient}; | ||
use coap::{CoAPServer, CoAPClient, CoAPRequest, CoAPResponse, CoAPOption}; | ||
use coap::IsMessage; | ||
|
||
fn request_handler(req: Packet, response: Option<Packet>) -> Option<Packet> { | ||
let uri_path = req.get_option(OptionType::UriPath).unwrap(); | ||
fn request_handler(request: CoAPRequest) -> Option<CoAPResponse> { | ||
let uri_path = request.get_option(CoAPOption::UriPath).unwrap(); | ||
|
||
return match response { | ||
Some(mut packet) => { | ||
packet.set_payload(uri_path.front().unwrap().clone()); | ||
Some(packet) | ||
}, | ||
_ => None | ||
return match request.response { | ||
Some(mut response) => { | ||
response.set_payload(uri_path.front().unwrap().clone()); | ||
Some(response) | ||
} | ||
_ => None, | ||
}; | ||
} | ||
|
||
fn main() { | ||
let mut server = CoAPServer::new("127.0.0.1:5683").unwrap(); | ||
server.handle(request_handler).unwrap(); | ||
let mut server = CoAPServer::new("127.0.0.1:5683").unwrap(); | ||
server.handle(request_handler).unwrap(); | ||
|
||
let url = "coap://127.0.0.1:5683/Rust"; | ||
println!("Client request: {}", url); | ||
let url = "coap://127.0.0.1:5683/Rust"; | ||
println!("Client request: {}", url); | ||
|
||
let response: Packet = CoAPClient::request(url).unwrap(); | ||
println!("Server reply: {}", String::from_utf8(response.payload).unwrap()); | ||
let response: CoAPResponse = CoAPClient::request(url).unwrap(); | ||
println!("Server reply: {}", | ||
String::from_utf8(response.message.payload).unwrap()); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,28 @@ | ||
extern crate coap; | ||
|
||
use std::io; | ||
use coap::packet::*; | ||
use coap::CoAPServer; | ||
use coap::{CoAPServer, CoAPResponse, CoAPRequest, IsMessage}; | ||
|
||
fn request_handler(_: Packet, response: Option<Packet>) -> Option<Packet> { | ||
return match response { | ||
Some(mut packet) => { | ||
packet.set_payload(b"OK".to_vec()); | ||
Some(packet) | ||
fn request_handler(request: CoAPRequest) -> Option<CoAPResponse> { | ||
return match request.response { | ||
Some(mut message) => { | ||
message.set_payload(b"OK".to_vec()); | ||
Some(message) | ||
}, | ||
_ => None | ||
}; | ||
} | ||
|
||
fn main() { | ||
let addr = "127.0.0.1:5683"; | ||
let addr = "127.0.0.1:5683"; | ||
|
||
let mut server = CoAPServer::new(addr).unwrap(); | ||
server.handle(request_handler).unwrap(); | ||
let mut server = CoAPServer::new(addr).unwrap(); | ||
server.handle(request_handler).unwrap(); | ||
|
||
println!("Server up on {}", addr); | ||
println!("Press any key to stop..."); | ||
println!("Server up on {}", addr); | ||
println!("Press any key to stop..."); | ||
|
||
io::stdin().read_line(&mut String::new()).unwrap(); | ||
io::stdin().read_line(&mut String::new()).unwrap(); | ||
|
||
println!("Server shutdown"); | ||
println!("Server shutdown"); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.