mirror of
https://github.com/actix/actix-extras.git
synced 2024-11-24 07:53:00 +01:00
commit
3bc60a8d5d
@ -8,7 +8,7 @@ use diesel::prelude::*;
|
|||||||
use models;
|
use models;
|
||||||
use schema;
|
use schema;
|
||||||
|
|
||||||
/// This is db executor actor. We are going to run 3 of them in parallele.
|
/// This is db executor actor. We are going to run 3 of them in parallel.
|
||||||
pub struct DbExecutor(pub SqliteConnection);
|
pub struct DbExecutor(pub SqliteConnection);
|
||||||
|
|
||||||
/// This is only message that this actor can handle, but it is easy to extend number of
|
/// This is only message that this actor can handle, but it is easy to extend number of
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#![cfg_attr(feature="cargo-clippy", allow(needless_pass_by_value))]
|
#![cfg_attr(feature="cargo-clippy", allow(needless_pass_by_value))]
|
||||||
//! There are two level of statfulness in actix-web. Application has state
|
//! There are two level of statefulness in actix-web. Application has state
|
||||||
//! that is shared across all handlers within same Application.
|
//! that is shared across all handlers within same Application.
|
||||||
//! And individual handler can have state.
|
//! And individual handler can have state.
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ use std::io::Read;
|
|||||||
use actix_web::*;
|
use actix_web::*;
|
||||||
|
|
||||||
|
|
||||||
/// somple handle
|
/// simple handle
|
||||||
fn index(req: HttpRequest) -> Result<HttpResponse> {
|
fn index(req: HttpRequest) -> Result<HttpResponse> {
|
||||||
println!("{:?}", req);
|
println!("{:?}", req);
|
||||||
Ok(httpcodes::HTTPOk
|
Ok(httpcodes::HTTPOk
|
||||||
|
@ -16,8 +16,8 @@ Chat server listens for incoming tcp connections. Server can access several type
|
|||||||
* `\list` - list all available rooms
|
* `\list` - list all available rooms
|
||||||
* `\join name` - join room, if room does not exist, create new one
|
* `\join name` - join room, if room does not exist, create new one
|
||||||
* `\name name` - set session name
|
* `\name name` - set session name
|
||||||
* `some message` - just string, send messsage to all peers in same room
|
* `some message` - just string, send message to all peers in same room
|
||||||
* client has to send heartbeat `Ping` messages, if server does not receive a heartbeat message for 10 seconds connection gets droppped
|
* client has to send heartbeat `Ping` messages, if server does not receive a heartbeat message for 10 seconds connection gets dropped
|
||||||
|
|
||||||
To start server use command: `cargo run --bin server`
|
To start server use command: `cargo run --bin server`
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ use codec::{ChatRequest, ChatResponse, ChatCodec};
|
|||||||
#[derive(Message)]
|
#[derive(Message)]
|
||||||
pub struct Message(pub String);
|
pub struct Message(pub String);
|
||||||
|
|
||||||
/// `ChatSession` actor is responsible for tcp peer communitions.
|
/// `ChatSession` actor is responsible for tcp peer communications.
|
||||||
pub struct ChatSession {
|
pub struct ChatSession {
|
||||||
/// unique session id
|
/// unique session id
|
||||||
id: usize,
|
id: usize,
|
||||||
@ -30,7 +30,7 @@ pub struct ChatSession {
|
|||||||
|
|
||||||
impl Actor for ChatSession {
|
impl Actor for ChatSession {
|
||||||
/// For tcp communication we are going to use `FramedContext`.
|
/// For tcp communication we are going to use `FramedContext`.
|
||||||
/// It is convinient wrapper around `Framed` object from `tokio_io`
|
/// It is convenient wrapper around `Framed` object from `tokio_io`
|
||||||
type Context = FramedContext<Self>;
|
type Context = FramedContext<Self>;
|
||||||
|
|
||||||
fn started(&mut self, ctx: &mut Self::Context) {
|
fn started(&mut self, ctx: &mut Self::Context) {
|
||||||
@ -149,7 +149,7 @@ impl ChatSession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Define tcp server that will accept incomint tcp connection and create
|
/// Define tcp server that will accept incoming tcp connection and create
|
||||||
/// chat actors.
|
/// chat actors.
|
||||||
pub struct TcpServer {
|
pub struct TcpServer {
|
||||||
chat: SyncAddress<ChatServer>,
|
chat: SyncAddress<ChatServer>,
|
||||||
|
@ -156,7 +156,7 @@ impl<S> Application<S> where S: 'static {
|
|||||||
/// Set application prefix
|
/// Set application prefix
|
||||||
///
|
///
|
||||||
/// Only requests that matches application's prefix get processed by this application.
|
/// Only requests that matches application's prefix get processed by this application.
|
||||||
/// Application prefix always contains laading "/" slash. If supplied prefix
|
/// Application prefix always contains leading "/" slash. If supplied prefix
|
||||||
/// does not contain leading slash, it get inserted. Prefix should
|
/// does not contain leading slash, it get inserted. Prefix should
|
||||||
/// consists valid path segments. i.e for application with
|
/// consists valid path segments. i.e for application with
|
||||||
/// prefix `/app` any request with following paths `/app`, `/app/` or `/app/test`
|
/// prefix `/app` any request with following paths `/app`, `/app/` or `/app/test`
|
||||||
|
@ -341,7 +341,7 @@ impl Default for NormalizePath {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl NormalizePath {
|
impl NormalizePath {
|
||||||
/// Create new `NoramlizePath` instance
|
/// Create new `NormalizePath` instance
|
||||||
pub fn new(append: bool, merge: bool, redirect: StatusCode) -> NormalizePath {
|
pub fn new(append: bool, merge: bool, redirect: StatusCode) -> NormalizePath {
|
||||||
NormalizePath {
|
NormalizePath {
|
||||||
append: append,
|
append: append,
|
||||||
|
@ -214,7 +214,7 @@ impl Cors {
|
|||||||
/// This method register cors middleware with resource and
|
/// This method register cors middleware with resource and
|
||||||
/// adds route for *OPTIONS* preflight requests.
|
/// adds route for *OPTIONS* preflight requests.
|
||||||
///
|
///
|
||||||
/// It is possible to register *Cors* middlware with `Resource::middleware()`
|
/// It is possible to register *Cors* middleware with `Resource::middleware()`
|
||||||
/// method, but in that case *Cors* middleware wont be able to handle *OPTIONS*
|
/// method, but in that case *Cors* middleware wont be able to handle *OPTIONS*
|
||||||
/// requests.
|
/// requests.
|
||||||
pub fn register<S: 'static>(self, resource: &mut Resource<S>) {
|
pub fn register<S: 'static>(self, resource: &mut Resource<S>) {
|
||||||
|
@ -1206,7 +1206,7 @@ mod tests {
|
|||||||
|
|
||||||
let mut buf = Buffer::new(
|
let mut buf = Buffer::new(
|
||||||
"GET /test HTTP/1.1\r\n\
|
"GET /test HTTP/1.1\r\n\
|
||||||
transfer-encoding: chnked\r\n\r\n");
|
transfer-encoding: chunked\r\n\r\n");
|
||||||
let req = parse_ready!(&mut buf);
|
let req = parse_ready!(&mut buf);
|
||||||
|
|
||||||
if let Ok(val) = req.chunked() {
|
if let Ok(val) = req.chunked() {
|
||||||
|
Loading…
Reference in New Issue
Block a user