Skip to content

Commit 1d7842c

Browse files
committed
Retire the service modules
1 parent eeba644 commit 1d7842c

File tree

9 files changed

+44
-53
lines changed

9 files changed

+44
-53
lines changed

src/client/rtu.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
66
use tokio::io::{AsyncRead, AsyncWrite};
77

8-
use crate::service::rtu::{Client, ClientContext};
8+
use crate::rtu::{Client, ClientContext};
99

1010
use super::*;
1111

src/client/tcp.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ pub fn attach_slave<T>(transport: T, slave: Slave) -> Context
4343
where
4444
T: AsyncRead + AsyncWrite + Send + Unpin + fmt::Debug + 'static,
4545
{
46-
let client = crate::service::tcp::Client::new(transport, slave);
46+
let client = crate::tcp::Client::new(transport, slave);
4747
Context {
4848
client: Box::new(client),
4949
}

src/codec/mod.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,26 @@ pub(crate) mod tcp;
2626
const MAX_PDU_SIZE: usize = 253;
2727

2828
#[cfg(any(test, feature = "rtu", feature = "tcp"))]
29+
#[cfg(any(feature = "rtu", feature = "tcp"))]
30+
pub(crate) async fn disconnect<T, C>(framed: tokio_util::codec::Framed<T, C>) -> std::io::Result<()>
31+
where
32+
T: tokio::io::AsyncWrite + Unpin,
33+
{
34+
use tokio::io::AsyncWriteExt as _;
35+
36+
framed
37+
.into_inner()
38+
.shutdown()
39+
.await
40+
.or_else(|err| match err.kind() {
41+
std::io::ErrorKind::NotConnected | std::io::ErrorKind::BrokenPipe => {
42+
// Already disconnected.
43+
Ok(())
44+
}
45+
_ => Err(err),
46+
})
47+
}
48+
2949
#[allow(clippy::cast_possible_truncation)]
3050
fn u16_len(len: usize) -> u16 {
3151
// This type conversion should always be safe, because either

src/frame/rtu.rs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,7 @@
33

44
use super::*;
55

6-
use crate::{ProtocolError, Result, Slave};
7-
8-
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9-
pub struct RequestContext {
10-
function_code: FunctionCode,
11-
header: Header,
12-
}
13-
14-
impl RequestContext {
15-
#[must_use]
16-
pub const fn function_code(&self) -> FunctionCode {
17-
self.function_code
18-
}
19-
}
6+
use crate::{rtu::RequestContext, ProtocolError, Result, Slave};
207

218
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
229
pub(crate) struct Header {

src/lib.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ pub mod client;
3939
pub mod slave;
4040
pub use self::slave::{Slave, SlaveId};
4141

42+
#[cfg(feature = "rtu")]
43+
pub mod rtu;
44+
45+
#[cfg(feature = "tcp")]
46+
pub mod tcp;
47+
4248
mod codec;
4349

4450
mod error;
@@ -61,7 +67,5 @@ pub use self::frame::{
6167
/// 2. [`ExceptionCode`]: An error occurred on the _Modbus_ server.
6268
pub type Result<T> = std::result::Result<std::result::Result<T, ExceptionCode>, Error>;
6369

64-
mod service;
65-
6670
#[cfg(feature = "server")]
6771
pub mod server;

src/prelude.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ pub use crate::client;
1212
#[cfg(feature = "rtu")]
1313
pub mod rtu {
1414
pub use crate::client::rtu::*;
15-
pub use crate::frame::rtu::RequestContext;
16-
pub use crate::service::rtu::{Client, ClientContext};
15+
pub use crate::rtu::{Client, ClientContext, RequestContext};
1716
}
1817

1918
#[allow(missing_docs)]

src/service/rtu.rs renamed to src/rtu.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,24 @@ use tokio::io::{AsyncRead, AsyncWrite};
88
use tokio_util::codec::Framed;
99

1010
use crate::{
11-
codec,
11+
codec::{self, disconnect},
1212
frame::{rtu::*, *},
1313
slave::*,
1414
Result,
1515
};
1616

17-
use super::disconnect;
17+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
18+
pub struct RequestContext {
19+
pub(crate) function_code: FunctionCode,
20+
pub(crate) header: Header,
21+
}
22+
23+
impl RequestContext {
24+
#[must_use]
25+
pub const fn function_code(&self) -> FunctionCode {
26+
self.function_code
27+
}
28+
}
1829

1930
/// _Modbus_ RTU client.
2031
#[derive(Debug)]

src/service/mod.rs

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/service/tcp.rs renamed to src/tcp.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use tokio::io::{AsyncRead, AsyncWrite};
88
use tokio_util::codec::Framed;
99

1010
use crate::{
11-
codec,
11+
codec::{self, disconnect},
1212
frame::{
1313
tcp::{Header, RequestAdu, ResponseAdu, TransactionId, UnitId},
1414
verify_response_header, RequestPdu, ResponsePdu,
@@ -17,8 +17,6 @@ use crate::{
1717
ExceptionResponse, ProtocolError, Request, Response, Result,
1818
};
1919

20-
use super::disconnect;
21-
2220
const INITIAL_TRANSACTION_ID: TransactionId = 0;
2321

2422
#[derive(Debug)]

0 commit comments

Comments
 (0)