Represent opcodes as enum instead of u32
This commit is contained in:
parent
8929bd4f96
commit
00c61cfa72
|
@ -1,6 +1,6 @@
|
|||
use std::io::Result;
|
||||
use connection::Connection;
|
||||
use models::Handshake;
|
||||
use models::{Handshake, OpCode};
|
||||
#[cfg(feature = "rich_presence")]
|
||||
use models::{SetActivityArgs, SetActivity};
|
||||
|
||||
|
@ -31,7 +31,7 @@ impl<T> Client<T>
|
|||
where F: FnOnce(SetActivity) -> SetActivity
|
||||
{
|
||||
let args = SetActivityArgs::command(f(SetActivity::new()));
|
||||
self.socket.send(1, args)?;
|
||||
self.socket.send(OpCode::Frame, args)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ impl<T> Client<T>
|
|||
fn handshake(&mut self) -> Result<()> {
|
||||
let client_id = self.client_id;
|
||||
let version = self.version;
|
||||
self.socket.send(0, Handshake::new(client_id, version))?;
|
||||
self.socket.send(OpCode::Handshake, Handshake::new(client_id, version))?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
use std::io::Result;
|
||||
use std::marker::Sized;
|
||||
use std::fmt::Debug;
|
||||
use models::Payload;
|
||||
use models::{Payload, OpCode};
|
||||
|
||||
pub trait Connection
|
||||
where Self: Sized
|
||||
{
|
||||
fn connect() -> Result<Self>;
|
||||
|
||||
fn send<T>(&mut self, opcode: u32, payload: T) -> Result<()>
|
||||
fn send<T>(&mut self, opcode: OpCode, payload: T) -> Result<()>
|
||||
where T: Payload + Debug;
|
||||
|
||||
fn recv(&mut self) -> Result<Vec<u8>>;
|
||||
|
|
|
@ -6,7 +6,7 @@ use std::env;
|
|||
use std::fmt::Debug;
|
||||
use models::Payload;
|
||||
|
||||
use models::Message;
|
||||
use models::{Message, OpCode};
|
||||
use super::base::Connection;
|
||||
|
||||
pub struct UnixConnection {
|
||||
|
@ -41,7 +41,7 @@ impl Connection for UnixConnection {
|
|||
Ok(Self { socket })
|
||||
}
|
||||
|
||||
fn send<T>(&mut self, opcode: u32, payload: T) -> Result<()>
|
||||
fn send<T>(&mut self, opcode: OpCode, payload: T) -> Result<()>
|
||||
where T: Payload + Debug
|
||||
{
|
||||
debug!("payload: {:#?}", payload);
|
||||
|
@ -49,7 +49,7 @@ impl Connection for UnixConnection {
|
|||
Err(why) => error!("{:?}", why),
|
||||
Ok(bytes) => {
|
||||
self.socket.write_all(bytes.as_ref())?;
|
||||
debug!("sent opcode: {}", opcode);
|
||||
debug!("sent opcode: {:?}", opcode);
|
||||
self.recv()?;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -3,6 +3,12 @@ use byte::ctx::{Endian, LE, Str};
|
|||
use serde_json;
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub enum OpCode {
|
||||
Handshake,
|
||||
Frame,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[repr(C)]
|
||||
pub struct Message {
|
||||
|
@ -31,11 +37,11 @@ impl TryWrite<Endian> for Message {
|
|||
}
|
||||
|
||||
impl Message {
|
||||
pub fn new<T>(opcode: u32, message: T) -> Self
|
||||
pub fn new<T>(opcode: OpCode, message: T) -> Self
|
||||
where T: Serialize
|
||||
{
|
||||
Message {
|
||||
opcode,
|
||||
opcode: opcode as u32,
|
||||
message: serde_json::to_string(&message).unwrap()
|
||||
}
|
||||
}
|
||||
|
@ -65,7 +71,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_encoder() {
|
||||
let msg = Message::new(1, Something { empty: true });
|
||||
let msg = Message::new(OpCode::Frame, Something { empty: true });
|
||||
let encoded = msg.encode().unwrap();
|
||||
let decoded = Message::decode(encoded.as_ref()).unwrap();
|
||||
assert_eq!(msg, decoded);
|
||||
|
|
|
@ -5,7 +5,7 @@ mod handshake;
|
|||
mod set_activity;
|
||||
|
||||
use serde::Serialize;
|
||||
pub use self::message::Message;
|
||||
pub use self::message::{Message, OpCode};
|
||||
pub use self::command::Command;
|
||||
pub use self::handshake::Handshake;
|
||||
#[cfg(feature = "rich_presence")]
|
||||
|
|
Loading…
Reference in New Issue