Browse Source

Extract proto module to its own crate.

wip
Titouan Rigoudy 4 years ago
parent
commit
a7f48e12aa
39 changed files with 111 additions and 76 deletions
  1. +20
    -2
      Cargo.lock
  2. +1
    -0
      Cargo.toml
  3. +1
    -8
      client/Cargo.toml
  4. +18
    -18
      client/src/client.rs
  5. +1
    -1
      client/src/control/response.rs
  6. +1
    -2
      client/src/control/ws.rs
  7. +2
    -2
      client/src/dispatcher.rs
  8. +1
    -1
      client/src/executor.rs
  9. +1
    -1
      client/src/handlers/login_handler.rs
  10. +2
    -2
      client/src/handlers/set_privileged_users_handler.rs
  11. +0
    -2
      client/src/lib.rs
  12. +2
    -3
      client/src/main.rs
  13. +2
    -2
      client/src/room.rs
  14. +1
    -1
      client/src/user.rs
  15. +26
    -0
      proto/Cargo.toml
  16. +0
    -0
      proto/src/config.rs
  17. +0
    -0
      proto/src/core/constants.rs
  18. +0
    -0
      proto/src/core/frame.rs
  19. +0
    -0
      proto/src/core/mod.rs
  20. +2
    -2
      proto/src/core/prefix.rs
  21. +0
    -0
      proto/src/core/u32.rs
  22. +2
    -2
      proto/src/core/user.rs
  23. +0
    -0
      proto/src/core/value.rs
  24. +0
    -0
      proto/src/handler.rs
  25. +1
    -0
      proto/src/lib.rs
  26. +1
    -1
      proto/src/packet.rs
  27. +0
    -0
      proto/src/peer/constants.rs
  28. +5
    -5
      proto/src/peer/message.rs
  29. +0
    -0
      proto/src/peer/mod.rs
  30. +5
    -5
      proto/src/server/client.rs
  31. +0
    -0
      proto/src/server/constants.rs
  32. +2
    -2
      proto/src/server/credentials.rs
  33. +0
    -0
      proto/src/server/mod.rs
  34. +5
    -5
      proto/src/server/request.rs
  35. +6
    -6
      proto/src/server/response.rs
  36. +2
    -2
      proto/src/server/testing.rs
  37. +0
    -0
      proto/src/server/version.rs
  38. +0
    -0
      proto/src/stream.rs
  39. +1
    -1
      proto/tests/connect.rs

+ 20
- 2
Cargo.lock View File

@ -1100,6 +1100,26 @@ dependencies = [
[[package]]
name = "solstice-client"
version = "0.1.0"
dependencies = [
"crossbeam-channel",
"env_logger",
"log 0.4.8",
"mio 0.6.22",
"parking_lot 0.8.0",
"rustc-serialize",
"slab 0.2.0",
"solstice-proto",
"threadpool",
"tokio 1.0.1",
"tokio-codec",
"tokio-core",
"tokio-io",
"ws",
]
[[package]]
name = "solstice-proto"
version = "0.1.0"
dependencies = [
"async-stream",
"byteorder 0.5.3",
@ -1116,12 +1136,10 @@ dependencies = [
"rustc-serialize",
"slab 0.2.0",
"thiserror",
"threadpool",
"tokio 1.0.1",
"tokio-codec",
"tokio-core",
"tokio-io",
"ws",
]
[[package]]


+ 1
- 0
Cargo.toml View File

@ -2,4 +2,5 @@
members = [
"client",
"proto",
]

+ 1
- 8
client/Cargo.toml View File

@ -5,21 +5,14 @@ authors = ["letitz"]
edition = "2018"
[dependencies]
async-stream = "^0.3"
byteorder = "^0.5.1"
bytes = "^1.0"
crossbeam-channel = "^0.3"
encoding = "^0.2"
encoding_rs = "^0.8"
env_logger = "^0.8"
futures = "^0.3"
log = "^0.4"
mio = "^0.6"
parking_lot = "^0.8"
rust-crypto = "^0.2.34"
rustc-serialize = "^0.3.17"
slab = "^0.2"
thiserror = "^1.0"
solstice-proto = { path = "../proto" }
threadpool = "^1.0"
tokio = { version = "1", features = ["full"] }
tokio-core = "^0.1"


+ 18
- 18
client/src/client.rs View File

@ -3,19 +3,19 @@ use std::net;
use crossbeam_channel;
use mio;
use slab;
use solstice_proto;
use solstice_proto::config;
use solstice_proto::peer;
use solstice_proto::server;
use crate::config;
use crate::control;
use crate::login::LoginStatus;
use crate::proto;
use crate::proto::peer;
use crate::proto::server;
use crate::room;
use crate::user;
#[derive(Debug)]
enum IncomingMessage {
Proto(proto::Response),
Proto(solstice_proto::Response),
#[allow(dead_code)]
ControlNotification(control::Notification),
@ -49,8 +49,8 @@ struct Peer {
pub struct Client {
#[allow(deprecated)]
proto_tx: mio::deprecated::Sender<proto::Request>,
proto_rx: crossbeam_channel::Receiver<proto::Response>,
proto_tx: mio::deprecated::Sender<solstice_proto::Request>,
proto_rx: crossbeam_channel::Receiver<solstice_proto::Response>,
control_tx: Option<control::Sender>,
@ -71,8 +71,8 @@ impl Client {
/// through `control_rx`.
#[allow(deprecated)]
pub fn new(
proto_tx: mio::deprecated::Sender<proto::Request>,
proto_rx: crossbeam_channel::Receiver<proto::Response>,
proto_tx: mio::deprecated::Sender<solstice_proto::Request>,
proto_rx: crossbeam_channel::Receiver<solstice_proto::Response>,
control_rx: crossbeam_channel::Receiver<control::Notification>,
) -> Self {
Client {
@ -141,7 +141,7 @@ impl Client {
#[allow(deprecated)]
self
.proto_tx
.send(proto::Request::ServerRequest(request))
.send(solstice_proto::Request::ServerRequest(request))
.unwrap();
}
@ -150,7 +150,7 @@ impl Client {
#[allow(deprecated)]
self
.proto_tx
.send(proto::Request::PeerMessage(peer_id, message))
.send(solstice_proto::Request::PeerMessage(peer_id, message))
.unwrap();
}
@ -327,17 +327,17 @@ impl Client {
* PROTO RESPONSE HANDLING *
*=========================*/
fn handle_proto_response(&mut self, response: proto::Response) {
fn handle_proto_response(&mut self, response: solstice_proto::Response) {
match response {
proto::Response::ServerResponse(server_response) => {
solstice_proto::Response::ServerResponse(server_response) => {
self.handle_server_response(server_response)
}
proto::Response::PeerConnectionOpen(peer_id) => {
solstice_proto::Response::PeerConnectionOpen(peer_id) => {
self.handle_peer_connection_open(peer_id)
}
proto::Response::PeerConnectionClosed(peer_id) => {
solstice_proto::Response::PeerConnectionClosed(peer_id) => {
self.handle_peer_connection_closed(peer_id)
}
@ -383,7 +383,7 @@ impl Client {
#[allow(deprecated)]
self
.proto_tx
.send(proto::Request::ServerRequest(
.send(solstice_proto::Request::ServerRequest(
server::ConnectToPeerRequest {
token: peer.token,
user_name: peer.user_name.clone(),
@ -404,7 +404,7 @@ impl Client {
#[allow(deprecated)]
self
.proto_tx
.send(proto::Request::ServerRequest(
.send(solstice_proto::Request::ServerRequest(
server::CannotConnectRequest {
token: peer.token,
user_name: peer.user_name,
@ -568,7 +568,7 @@ impl Client {
#[allow(deprecated)]
self
.proto_tx
.send(proto::Request::PeerConnect(
.send(solstice_proto::Request::PeerConnect(
peer_id,
response.ip,
response.port,


+ 1
- 1
client/src/control/response.rs View File

@ -1,4 +1,4 @@
use crate::proto::User;
use solstice_proto::User;
use crate::room;
/// This enumeration is the list of possible control responses from the client


+ 1
- 2
client/src/control/ws.rs View File

@ -4,8 +4,7 @@ use std::fmt;
use crossbeam_channel;
use rustc_serialize::json;
use ws;
use crate::config;
use solstice_proto::config;
use super::request::*;
use super::response::*;


+ 2
- 2
client/src/dispatcher.rs View File

@ -6,7 +6,7 @@ use crate::context::Context;
use crate::executor::Job;
use crate::handlers::{LoginHandler, SetPrivilegedUsersHandler};
use crate::message_handler::MessageHandler;
use crate::proto::server::ServerResponse;
use solstice_proto::server::ServerResponse;
/// The type of messages dispatched by a dispatcher.
#[derive(Debug)]
@ -72,7 +72,7 @@ impl Dispatcher {
#[cfg(test)]
mod tests {
use crate::proto::server;
use solstice_proto::server;
use super::*;


+ 1
- 1
client/src/executor.rs View File

@ -61,7 +61,7 @@ impl Executor {
mod tests {
use std::sync::{Arc, Barrier};
use crate::proto::{User, UserStatus};
use solstice_proto::{User, UserStatus};
use super::{Context, Executor, Job};


+ 1
- 1
client/src/handlers/login_handler.rs View File

@ -3,7 +3,7 @@ use std::io;
use crate::context::Context;
use crate::login::LoginStatus;
use crate::message_handler::MessageHandler;
use crate::proto::server::LoginResponse;
use solstice_proto::server::LoginResponse;
#[derive(Debug, Default)]
pub struct LoginHandler;


+ 2
- 2
client/src/handlers/set_privileged_users_handler.rs View File

@ -2,7 +2,7 @@ use std::io;
use crate::context::Context;
use crate::message_handler::MessageHandler;
use crate::proto::server::PrivilegedUsersResponse;
use solstice_proto::server::PrivilegedUsersResponse;
#[derive(Debug, Default)]
pub struct SetPrivilegedUsersHandler;
@ -27,7 +27,7 @@ impl MessageHandler<PrivilegedUsersResponse> for SetPrivilegedUsersHandler {
mod tests {
use crate::context::Context;
use crate::message_handler::MessageHandler;
use crate::proto::server::PrivilegedUsersResponse;
use solstice_proto::server::PrivilegedUsersResponse;
use super::SetPrivilegedUsersHandler;


+ 0
- 2
client/src/lib.rs View File

@ -1,2 +0,0 @@
mod config;
pub mod proto;

+ 2
- 3
client/src/main.rs View File

@ -6,9 +6,9 @@ use std::thread;
use crossbeam_channel;
use env_logger;
use solstice_proto;
mod client;
mod config;
mod context;
mod control;
mod dispatcher;
@ -16,7 +16,6 @@ mod executor;
mod handlers;
mod login;
mod message_handler;
mod proto;
mod room;
mod user;
@ -25,7 +24,7 @@ fn main() {
let (proto_to_client_tx, proto_to_client_rx) = crossbeam_channel::unbounded();
let mut proto_agent = match proto::Agent::new(proto_to_client_tx) {
let mut proto_agent = match solstice_proto::Agent::new(proto_to_client_tx) {
Ok(agent) => agent,
Err(err) => {
error!("Error initializing protocol agent: {}", err);


+ 2
- 2
client/src/room.rs View File

@ -3,7 +3,7 @@ use std::error;
use std::fmt;
use std::mem;
use crate::proto::{server, User};
use solstice_proto::{server, User};
/// This enumeration is the list of possible membership states for a chat room.
#[derive(Clone, Copy, Debug, Eq, PartialEq, RustcDecodable, RustcEncodable)]
@ -358,7 +358,7 @@ impl RoomMap {
#[cfg(test)]
mod tests {
use crate::proto::server::RoomListResponse;
use solstice_proto::server::RoomListResponse;
use super::{Room, RoomMap, Visibility};


+ 1
- 1
client/src/user.rs View File

@ -2,7 +2,7 @@ use std::collections;
use std::error;
use std::fmt;
use crate::proto::{User, UserStatus};
use solstice_proto::{User, UserStatus};
/// The error returned when a user name was not found in the user map.
#[derive(Debug)]


+ 26
- 0
proto/Cargo.toml View File

@ -0,0 +1,26 @@
[package]
name = "solstice-proto"
version = "0.1.0"
authors = ["letitz"]
edition = "2018"
[dependencies]
async-stream = "^0.3"
byteorder = "^0.5.1"
bytes = "^1.0"
crossbeam-channel = "^0.3"
encoding = "^0.2"
encoding_rs = "^0.8"
env_logger = "^0.8"
futures = "^0.3"
log = "^0.4"
mio = "^0.6"
parking_lot = "^0.8"
rust-crypto = "^0.2.34"
rustc-serialize = "^0.3.17"
slab = "^0.2"
thiserror = "^1.0"
tokio = { version = "1", features = ["full"] }
tokio-core = "^0.1"
tokio-io = "^0.1"
tokio-codec = "^0.1"

client/src/config.rs → proto/src/config.rs View File


client/src/proto/core/constants.rs → proto/src/core/constants.rs View File


client/src/proto/core/frame.rs → proto/src/core/frame.rs View File


client/src/proto/core/mod.rs → proto/src/core/mod.rs View File


client/src/proto/core/prefix.rs → proto/src/core/prefix.rs View File

@ -5,7 +5,7 @@ use std::convert::TryFrom;
use bytes::BytesMut;
use crate::proto::core::u32::{encode_u32, U32_BYTE_LEN};
use crate::core::u32::{encode_u32, U32_BYTE_LEN};
/// Helper for writing length-prefixed values into buffers, without having to
/// know the length ahead of encoding time.
@ -87,7 +87,7 @@ mod tests {
use bytes::{BufMut, BytesMut};
use crate::proto::core::u32::{decode_u32, U32_BYTE_LEN};
use crate::core::u32::{decode_u32, U32_BYTE_LEN};
#[test]
fn finalize_empty() {

client/src/proto/core/u32.rs → proto/src/core/u32.rs View File


client/src/proto/core/user.rs → proto/src/core/user.rs View File

@ -1,10 +1,10 @@
use std::io;
use crate::proto::core::value::{
use crate::core::value::{
ValueDecode, ValueDecodeError, ValueDecoder, ValueEncode, ValueEncodeError,
ValueEncoder,
};
use crate::proto::{
use crate::{
MutPacket, Packet, PacketReadError, ReadFromPacket, WriteToPacket,
};

client/src/proto/core/value.rs → proto/src/core/value.rs View File


client/src/proto/handler.rs → proto/src/handler.rs View File


client/src/proto/mod.rs → proto/src/lib.rs View File

@ -1,3 +1,4 @@
pub mod config;
mod core;
mod handler;
mod packet;

client/src/proto/packet.rs → proto/src/packet.rs View File

@ -11,7 +11,7 @@ use encoding::{DecoderTrap, EncoderTrap, Encoding};
#[allow(deprecated)]
use mio::deprecated::TryRead;
use crate::proto::core::constants::*;
use crate::core::constants::*;
/*==================*
* READ-ONLY PACKET *

client/src/proto/peer/constants.rs → proto/src/peer/constants.rs View File


client/src/proto/peer/message.rs → proto/src/peer/message.rs View File

@ -2,12 +2,12 @@ use std::io;
use log::warn;
use crate::proto::core::value::{
use crate::core::value::{
ValueDecode, ValueDecodeError, ValueDecoder, ValueEncode, ValueEncodeError,
ValueEncoder,
};
use crate::proto::peer::constants::*;
use crate::proto::{
use crate::peer::constants::*;
use crate::{
MutPacket, Packet, PacketReadError, ReadFromPacket, WriteToPacket,
};
@ -168,8 +168,8 @@ impl ValueDecode for PeerInit {
mod tests {
use bytes::BytesMut;
use crate::proto::core::value::tests::roundtrip;
use crate::proto::core::value::{ValueDecodeError, ValueDecoder};
use crate::core::value::tests::roundtrip;
use crate::core::value::{ValueDecodeError, ValueDecoder};
use super::*;

client/src/proto/peer/mod.rs → proto/src/peer/mod.rs View File


client/src/proto/server/client.rs → proto/src/server/client.rs View File

@ -7,8 +7,8 @@ use log::{debug, info};
use thiserror::Error;
use tokio::net;
use crate::proto::core::frame::FrameStream;
use crate::proto::server::{
use crate::core::frame::FrameStream;
use crate::server::{
Credentials, LoginResponse, ServerRequest, ServerResponse, Version,
};
@ -178,14 +178,14 @@ mod tests {
use tokio::net;
use tokio::sync::mpsc;
use crate::proto::server::testing::{
use crate::server::testing::{
ServerBuilder, ShutdownType, UserStatusMap,
};
use crate::proto::server::{
use crate::server::{
Credentials, ServerRequest, ServerResponse, UserStatusRequest,
UserStatusResponse,
};
use crate::proto::UserStatus;
use crate::UserStatus;
use super::{Client, ClientOptions, Version};

client/src/proto/server/constants.rs → proto/src/server/constants.rs View File


client/src/proto/server/credentials.rs → proto/src/server/credentials.rs View File

@ -3,7 +3,7 @@
use crypto::digest::Digest;
use crypto::md5::Md5;
use crate::proto::server::{LoginRequest, Version};
use crate::server::{LoginRequest, Version};
/// Credentials for logging in a client to a server.
#[derive(Debug, Eq, PartialEq)]
@ -62,7 +62,7 @@ impl Credentials {
#[cfg(test)]
mod tests {
use crate::proto::server::{LoginRequest, Version};
use crate::server::{LoginRequest, Version};
use super::Credentials;

client/src/proto/server/mod.rs → proto/src/server/mod.rs View File


client/src/proto/server/request.rs → proto/src/server/request.rs View File

@ -1,11 +1,11 @@
use std::io;
use crate::proto::core::value::{
use crate::core::value::{
ValueDecode, ValueDecodeError, ValueDecoder, ValueEncode, ValueEncodeError,
ValueEncoder,
};
use crate::proto::packet::{MutPacket, WriteToPacket};
use crate::proto::server::constants::*;
use crate::packet::{MutPacket, WriteToPacket};
use crate::server::constants::*;
/*================*
* SERVER REQUEST *
@ -639,8 +639,8 @@ impl ValueDecode for UserStatusRequest {
mod tests {
use bytes::BytesMut;
use crate::proto::core::value::tests::roundtrip;
use crate::proto::core::value::{ValueDecodeError, ValueDecoder};
use crate::core::value::tests::roundtrip;
use crate::core::value::{ValueDecodeError, ValueDecoder};
use super::*;

client/src/proto/server/response.rs → proto/src/server/response.rs View File

@ -2,13 +2,13 @@ use std::net;
use log::{debug, error, warn};
use crate::proto::core::value::{
use crate::core::value::{
ValueDecode, ValueDecodeError, ValueDecoder, ValueEncode, ValueEncodeError,
ValueEncoder,
};
use crate::proto::packet::{Packet, PacketReadError, ReadFromPacket};
use crate::proto::server::constants::*;
use crate::proto::{User, UserStatus};
use crate::packet::{Packet, PacketReadError, ReadFromPacket};
use crate::server::constants::*;
use crate::{User, UserStatus};
/*=================*
* SERVER RESPONSE *
@ -1442,8 +1442,8 @@ mod tests {
use bytes::BytesMut;
use crate::proto::core::value::tests::roundtrip;
use crate::proto::core::value::{ValueDecodeError, ValueDecoder};
use crate::core::value::tests::roundtrip;
use crate::core::value::{ValueDecodeError, ValueDecoder};
use super::*;

client/src/proto/server/testing.rs → proto/src/server/testing.rs View File

@ -12,8 +12,8 @@ use tokio::sync::mpsc;
use tokio::sync::oneshot;
use tokio::sync::watch;
use crate::proto::core::frame::FrameStream;
use crate::proto::server::{
use crate::core::frame::FrameStream;
use crate::server::{
LoginResponse, ServerRequest, ServerResponse, UserStatusRequest,
UserStatusResponse,
};

client/src/proto/server/version.rs → proto/src/server/version.rs View File


client/src/proto/stream.rs → proto/src/stream.rs View File


client/tests/connect.rs → proto/tests/connect.rs View File

@ -3,7 +3,7 @@ use tokio::io;
use tokio::net;
use tokio::sync::mpsc;
use solstice_client::proto::server::{
use solstice_proto::server::{
Client, ClientOptions, Credentials, ServerRequest, ServerResponse,
UserStatusRequest, Version,
};

Loading…
Cancel
Save