pub struct RefreshPinRepoV0 {
pub pin: PinRepo,
pub ban_member: Option<Digest>,
pub flush_topics: Vec<(TopicId, Sig)>,
}
Expand description
Request to refresh the Pinning of a previously pinned repo.
it can consist of updating the expose_outer, the list of ro_topics and/or rw_topics, and in case of a ban_member, the broker will effectively flush the topics locally after all local members except the banned one, have refreshed
Fields§
§pin: PinRepo
The new PinRepo info
ban_member: Option<Digest>
optional hashed member ID that should be banned
flush_topics: Vec<(TopicId, Sig)>
when banning, list of topics that are to be flushed (once all the local members have left, except the one to be banned) All the honest local members have to send this list in order for the banned one to be effectively banned for each Topic, a signature over the hashed UserId to ban, by the Topic private key. The banning process on the broker is meant to flush topics that would remain dangling if the malicious member would not unpin them after being removed from members of repo. The userId of banned user is revealed to the local broker where it was attached, which is a breach of privacy deemed acceptable as only a broker that already knew the userid will enforce it, and that broker might be interested to know that the offending user was banned from a repo, as only malicious users are banned. The broker might also discard this information, and just proceed with the flush without much ado. Of course, if the broker is controlled by the malicious user, it might not proceed with the ban/flush. But who cares. That broker will keep old data forever, but it is a malicious broker anyway.
Trait Implementations§
Source§impl Clone for RefreshPinRepoV0
impl Clone for RefreshPinRepoV0
Source§fn clone(&self) -> RefreshPinRepoV0
fn clone(&self) -> RefreshPinRepoV0
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RefreshPinRepoV0
impl Debug for RefreshPinRepoV0
Source§impl<'de> Deserialize<'de> for RefreshPinRepoV0
impl<'de> Deserialize<'de> for RefreshPinRepoV0
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for RefreshPinRepoV0
impl RefUnwindSafe for RefreshPinRepoV0
impl Send for RefreshPinRepoV0
impl Sync for RefreshPinRepoV0
impl Unpin for RefreshPinRepoV0
impl UnwindSafe for RefreshPinRepoV0
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more