Skip to content

Commit 22f067f

Browse files
committed
some minor stuff
1 parent 0eae2f7 commit 22f067f

File tree

4 files changed

+41
-13
lines changed

4 files changed

+41
-13
lines changed

src/codes_handle/iterator.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ impl<'ch, S: HandleGenerator> FallibleIterator for RefMessageIter<'ch, S> {
3232
if new_eccodes_handle.is_null() {
3333
Ok(None)
3434
} else {
35-
Ok(Some(RefMessage::new_from_gen(new_eccodes_handle)))
35+
Ok(Some(RefMessage::new(new_eccodes_handle)))
3636
}
3737
}
3838
}
@@ -60,7 +60,7 @@ impl<S: ThreadSafeHandle> FallibleIterator for ArcMessageIter<S> {
6060
if new_eccodes_handle.is_null() {
6161
Ok(None)
6262
} else {
63-
Ok(Some(ArcMessage::new_from_gen(
63+
Ok(Some(ArcMessage::new(
6464
new_eccodes_handle,
6565
&self.codes_handle,
6666
)))
@@ -76,7 +76,10 @@ mod tests {
7676
codes_message::DynamicKeyType,
7777
};
7878
use anyhow::{Context, Ok, Result};
79-
use std::{path::Path, sync::{Arc, Barrier}};
79+
use std::{
80+
path::Path,
81+
sync::{Arc, Barrier},
82+
};
8083

8184
#[test]
8285
fn iterator_lifetimes() -> Result<()> {
@@ -278,13 +281,7 @@ mod tests {
278281
let t = std::thread::spawn(move || {
279282
for _ in 0..1000 {
280283
b.wait();
281-
let _ = unsafe {
282-
crate::intermediate_bindings::codes_get_size(
283-
msg.message_handle,
284-
"shortName",
285-
)
286-
.unwrap()
287-
};
284+
let _ = msg.read_key_dynamic("shortName").unwrap();
288285
}
289286
});
290287

src/codes_handle/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub use iterator::{ArcMessageIter, RefMessageIter};
2020
mod iterator;
2121

2222
/// This is an internal structure used to access provided file by `CodesHandle`.
23-
/// It also allows to differentiate between `CodesHandle` created from file and from index.
23+
/// It also allows to differentiate between `CodesFile` created from file and from index.
2424
/// It is not intended to be used directly by the user.
2525
#[doc(hidden)]
2626
#[derive(Debug)]

src/codes_message/clone.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,34 @@ impl<P: Debug> CodesMessage<P> {
1818
}))
1919
}
2020
}
21+
22+
#[cfg(test)]
23+
mod tests {
24+
use std::path::Path;
25+
26+
use anyhow::{Context, Result};
27+
use fallible_iterator::FallibleIterator;
28+
29+
use crate::{CodesFile, ProductKind};
30+
31+
#[test]
32+
fn check_clone_safety() -> Result<()> {
33+
let file_path = Path::new("./data/iceland-levels.grib");
34+
let product_kind = ProductKind::GRIB;
35+
let mut handle = CodesFile::new_from_file(file_path, product_kind)?;
36+
37+
let msg1 = handle
38+
.ref_message_iter()
39+
.next()?
40+
.context("Message not some")?;
41+
let key1 = msg1.read_key_dynamic("typeOfLevel")?;
42+
43+
let msg_clone = msg1.try_clone()?;
44+
drop(msg1);
45+
drop(handle);
46+
let key1_clone = msg_clone.read_key_dynamic("typeOfLevel")?;
47+
assert_eq!(key1, key1_clone);
48+
49+
Ok(())
50+
}
51+
}

src/codes_message/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ pub struct ArcParent<S: ThreadSafeHandle> {
9090
}
9191

9292
impl RefMessage<'_> {
93-
pub(crate) fn new_from_gen(handle: *mut codes_handle) -> Self {
93+
pub(crate) fn new(handle: *mut codes_handle) -> Self {
9494
RefMessage {
9595
_parent: RefParent(PhantomData),
9696
message_handle: handle,
@@ -99,7 +99,7 @@ impl RefMessage<'_> {
9999
}
100100

101101
impl<S: ThreadSafeHandle> ArcMessage<S> {
102-
pub(crate) fn new_from_gen(handle: *mut codes_handle, parent: &Arc<CodesFile<S>>) -> Self {
102+
pub(crate) fn new(handle: *mut codes_handle, parent: &Arc<CodesFile<S>>) -> Self {
103103
ArcMessage {
104104
_parent: ArcParent {
105105
_arc_handle: parent.clone(),

0 commit comments

Comments
 (0)