Skip to content

Commit 86b9e82

Browse files
author
Dylan McKay
committed
Generalize PacketKind
There is no need for a separate trait, we can simply use 'Packet' instead which is more flexible.
1 parent 31176c3 commit 86b9e82

File tree

6 files changed

+22
-29
lines changed

6 files changed

+22
-29
lines changed

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
1212
pub use self::types::{Type, Integer, Array, String, ByteOrder};
1313
pub use self::error::Error;
14-
pub use self::packet::{PacketKind, Packet};
14+
pub use self::packet::Packet;
1515

1616
#[macro_use]
1717
pub mod types;

src/packet/macros.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ macro_rules! define_packet_kind
7373
}
7474
}
7575

76-
impl $crate::PacketKind for $ty
76+
impl $crate::Packet for $ty
7777
{
7878
fn read(read: &mut ::std::io::Read) -> Result<Self, $crate::Error> {
7979
let packet_id = <$id_ty as $crate::Type>::read(read)?;

src/packet/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
pub use self::packet::{PacketKind, Packet};
1+
pub use self::packet::Packet;
22

33
#[macro_use]
44
pub mod macros;

src/packet/packet.rs

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ use std::io::prelude::*;
44
use std::io::Cursor;
55
use std::fmt;
66

7-
/// A packet enum.
8-
pub trait PacketKind : Clone + fmt::Debug
7+
/// A specific packet type.
8+
pub trait Packet : Clone + fmt::Debug
99
{
1010
fn read(read: &mut Read) -> Result<Self, Error>;
1111
fn write(&self, write: &mut Write) -> Result<(), Error>;
@@ -22,17 +22,10 @@ pub trait PacketKind : Clone + fmt::Debug
2222
}
2323
}
2424

25-
/// A specific packet type.
26-
pub trait Packet : Clone + fmt::Debug
27-
{
28-
fn read(read: &mut Read) -> Result<Self, Error>;
29-
fn write(&self, write: &mut Write) -> Result<(), Error>;
30-
}
31-
3225
#[cfg(test)]
3326
#[allow(unused_variables)]
3427
mod test {
35-
pub use PacketKind;
28+
pub use Packet;
3629

3730
define_packet!(Handshake);
3831
define_packet!(Kick);
@@ -51,7 +44,7 @@ mod test {
5144
properties: ::std::collections::HashMap<String, bool>
5245
});
5346

54-
define_packet_kind!(Packet: u32 {
47+
define_packet_kind!(PacketKind: u32 {
5548
0x00 => Handshake,
5649
0x01 => Kick,
5750
0x02 => Hello,
@@ -75,25 +68,25 @@ mod test {
7568
describe! packet_ids {
7669
describe! numerical {
7770
it "gets the corrrect ids" {
78-
assert_eq!(Packet::Handshake(Handshake).packet_id(), 0x00);
79-
assert_eq!(Packet::Kick(Kick).packet_id(), 0x01);
71+
assert_eq!(PacketKind::Handshake(Handshake).packet_id(), 0x00);
72+
assert_eq!(PacketKind::Kick(Kick).packet_id(), 0x01);
8073

81-
assert_eq!(Packet::Hello(hello).packet_id(), 0x02);
82-
assert_eq!(Packet::Goodbye(goodbye).packet_id(), 0x03);
74+
assert_eq!(PacketKind::Hello(hello).packet_id(), 0x02);
75+
assert_eq!(PacketKind::Goodbye(goodbye).packet_id(), 0x03);
8376
}
8477
}
8578

8679
describe! writing {
8780
it "writes the correct values" {
88-
let packet = Packet::Hello(hello);
81+
let packet = PacketKind::Hello(hello);
8982

9083
assert_eq!(&packet.bytes().unwrap(), hello_expected_bytes);
9184
}
9285
}
9386

9487
describe! reading {
9588
it "reads the correct values" {
96-
let packet = Packet::from_bytes(hello_expected_bytes).unwrap();
89+
let packet = PacketKind::from_bytes(hello_expected_bytes).unwrap();
9790

9891
assert_eq!(packet.bytes().unwrap(), hello_expected_bytes);
9992
}

src/wire/dgram/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
use {PacketKind, Error};
1+
use {Packet, Error};
22
use wire::middleware;
33

44
use std::io::prelude::*;
55
use std::io::Cursor;
66
use std;
77

88
/// A datagram-based packet pipeline.
9-
pub struct Pipeline<P: PacketKind, M: middleware::Pipeline>
9+
pub struct Pipeline<P: Packet, M: middleware::Pipeline>
1010
{
1111
pub middleware: M,
1212

1313
_a: std::marker::PhantomData<P>,
1414
}
1515

1616
impl<P,M> Pipeline<P,M>
17-
where P: PacketKind, M: middleware::Pipeline
17+
where P: Packet, M: middleware::Pipeline
1818
{
1919
pub fn new(middleware: M) -> Self {
2020
Pipeline {

src/wire/stream/connection.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use {PacketKind, Error};
1+
use {Packet, Error};
22
use wire::stream::{Transport, transport};
33
use wire::middleware;
44

@@ -7,7 +7,7 @@ use std::io::Cursor;
77

88
/// A stream-based connection.
99
// TODO: Allow custom transports.
10-
pub struct Connection<P: PacketKind, S: Read + Write, M: middleware::Pipeline = middleware::pipeline::Default>
10+
pub struct Connection<P: Packet, S: Read + Write, M: middleware::Pipeline = middleware::pipeline::Default>
1111
{
1212
pub stream: S,
1313
pub transport: transport::Simple,
@@ -17,7 +17,7 @@ pub struct Connection<P: PacketKind, S: Read + Write, M: middleware::Pipeline =
1717
}
1818

1919
impl<P,S,M> Connection<P,S,M>
20-
where P: PacketKind, S: Read + Write, M: middleware::Pipeline
20+
where P: Packet, S: Read + Write, M: middleware::Pipeline
2121
{
2222
/// Creates a new connection.
2323
pub fn new(stream: S, middleware: M) -> Self {
@@ -61,7 +61,7 @@ impl<P,S,M> Connection<P,S,M>
6161
#[cfg(test)]
6262
mod test
6363
{
64-
pub use PacketKind;
64+
pub use Packet;
6565
pub use super::Connection;
6666
pub use wire::middleware;
6767

@@ -71,13 +71,13 @@ mod test
7171
data: Vec<u8>
7272
});
7373

74-
define_packet_kind!(Packet : u8 {
74+
define_packet_kind!(PacketKind : u8 {
7575
0x00 => Ping
7676
});
7777

7878
describe! connection {
7979
it "can write and read back data" {
80-
let ping = Packet::Ping(Ping { data: vec![5, 4, 3, 2, 1]});
80+
let ping = PacketKind::Ping(Ping { data: vec![5, 4, 3, 2, 1]});
8181

8282
let buffer = Cursor::new(Vec::new());
8383
let mut connection = Connection::new(buffer, middleware::pipeline::default());

0 commit comments

Comments
 (0)