use crate::ibverbs::memory::RemoteMemoryRegion;
use serde::{Deserialize, Serialize};
#[derive(Debug, Copy, Clone, Serialize, Deserialize)]
pub struct PeerRemoteMemoryRegion {
peer: usize,
pub(super) remote_mr: RemoteMemoryRegion,
}
impl PeerRemoteMemoryRegion {
pub fn new(peer: usize, remote_mr: RemoteMemoryRegion) -> Self {
Self { peer, remote_mr }
}
pub fn peer(&self) -> usize {
self.peer
}
pub fn sub_region(&self, offset: usize) -> Option<PeerRemoteMemoryRegion> {
Some(PeerRemoteMemoryRegion {
peer: self.peer,
remote_mr: self.remote_mr.sub_region(offset)?,
})
}
pub fn sub_region_unchecked(&self, offset: usize) -> PeerRemoteMemoryRegion {
PeerRemoteMemoryRegion {
peer: self.peer,
remote_mr: self.remote_mr.sub_region_unchecked(offset),
}
}
}