From 95d02659d56489b33c338ef3495e6a3f8c27570f Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Wed, 27 Mar 2019 17:30:37 -0700 Subject: [PATCH] Added Framed::map_io() method --- actix-codec/CHANGES.md | 7 ++++++- actix-codec/Cargo.toml | 10 +++++----- actix-codec/src/framed.rs | 16 ++++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/actix-codec/CHANGES.md b/actix-codec/CHANGES.md index b79c2f0d..116b68a7 100644 --- a/actix-codec/CHANGES.md +++ b/actix-codec/CHANGES.md @@ -1,6 +1,11 @@ # Changes -## [0.1.0] - 2019-03-06 +## [0.1.2] - 2019-03-27 + +* Added `Framed::map_io()` method. + + +## [0.1.1] - 2019-03-06 * Added `FramedParts::with_read_buffer()` method. diff --git a/actix-codec/Cargo.toml b/actix-codec/Cargo.toml index ace40c5c..376e4b31 100644 --- a/actix-codec/Cargo.toml +++ b/actix-codec/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "actix-codec" -version = "0.1.1" +version = "0.1.2" authors = ["Nikolay Kim "] description = "Utilities for encoding and decoding frames" keywords = ["network", "framework", "async", "futures"] @@ -11,15 +11,15 @@ categories = ["network-programming", "asynchronous"] license = "MIT/Apache-2.0" exclude = [".gitignore", ".travis.yml", ".cargo/config", "appveyor.yml"] edition = "2018" -workspace = "../" +workspace = ".." [lib] name = "actix_codec" path = "src/lib.rs" [dependencies] -bytes = "0.4" +bytes = "0.4.12" futures = "0.1.24" -tokio-io = "0.1" -tokio-codec = "0.1" +tokio-io = "0.1.12" +tokio-codec = "0.1.1" log = "0.4" \ No newline at end of file diff --git a/actix-codec/src/framed.rs b/actix-codec/src/framed.rs index 20b31308..7fbb4f27 100644 --- a/actix-codec/src/framed.rs +++ b/actix-codec/src/framed.rs @@ -167,6 +167,22 @@ impl Framed { } } + /// Consume the `Frame`, returning `Frame` with different io. + pub fn map_io(self, f: F) -> Framed + where + F: Fn(T) -> T2, + { + let (inner, read_buf) = self.inner.into_parts(); + let (inner, write_buf, lw, hw) = inner.into_parts(); + + Framed { + inner: framed_read2_with_buffer( + framed_write2_with_buffer(Fuse(f(inner.0), inner.1), write_buf, lw, hw), + read_buf, + ), + } + } + /// Consume the `Frame`, returning `Frame` with different codec. pub fn map_codec(self, f: F) -> Framed where