Skip to main content

ControlMessage

Enum ControlMessage 

Source
pub enum ControlMessage {
    Cancel {
        message_id: String,
    },
    Newgroup {
        group: String,
        moderated: bool,
    },
    Rmgroup {
        group: String,
    },
    Checkgroups {
        scope: Option<String>,
        serial: Option<String>,
    },
    Ihave {
        message_ids: Vec<String>,
        relayer: Option<String>,
    },
    Sendme {
        message_ids: Vec<String>,
        relayer: Option<String>,
    },
    Unknown {
        value: String,
    },
}
Expand description

Control message types (RFC 5537 Section 5)

Control messages are special articles that trigger administrative actions on news servers rather than being displayed to users.

Variants§

§

Cancel

Cancel an article (RFC 5537 Section 5.3)

Format: cancel <message-id>

Withdraws an article from circulation. The message-id specifies which article to cancel.

Fields

§message_id: String

Message-ID of the article to cancel

§

Newgroup

Create or modify a newsgroup (RFC 5537 Section 5.2.1)

Format: newgroup <newsgroup-name> [moderated]

Creates a new newsgroup or modifies an existing one. The optional moderated keyword indicates the group should be moderated.

Fields

§group: String

Name of the newsgroup to create

§moderated: bool

Whether the group should be moderated

§

Rmgroup

Remove a newsgroup (RFC 5537 Section 5.2.2)

Format: rmgroup <newsgroup-name>

Removes a newsgroup from the server.

Fields

§group: String

Name of the newsgroup to remove

§

Checkgroups

Provide authoritative group list (RFC 5537 Section 5.2.3)

Format: checkgroups [scope] [#serial-number]

Provides an authoritative list of valid newsgroups for a hierarchy.

Fields

§scope: Option<String>

Optional scope/hierarchy

§serial: Option<String>

Optional serial number for versioning

§

Ihave

Legacy peer-to-peer article exchange (RFC 5537 Section 5.5)

Format: ihave <msg-id> [<msg-id>...] <relayer-name>

Largely obsolete. Use NNTP IHAVE command instead (RFC 3977 Section 6.3.2).

Fields

§message_ids: Vec<String>

List of message-IDs being offered

§relayer: Option<String>

Name of the relaying server

§

Sendme

Legacy peer-to-peer article exchange (RFC 5537 Section 5.5)

Format: sendme <msg-id> [<msg-id>...] <relayer-name>

Largely obsolete. Requests articles from a peer.

Fields

§message_ids: Vec<String>

List of message-IDs being requested

§relayer: Option<String>

Name of the relaying server

§

Unknown

Unknown or unrecognized control message type

Contains the raw control header value for custom handling.

Fields

§value: String

The raw Control header value

Implementations§

Source§

impl ControlMessage

Source

pub fn parse(control: &str) -> Option<ControlMessage>

Parse a control message from a Control header value

§Arguments
  • control - The value of the Control header field
§Examples
use nntp_rs::article::ControlMessage;

let msg = ControlMessage::parse("cancel <spam@example.com>").unwrap();
match msg {
    ControlMessage::Cancel { message_id } => {
        assert_eq!(message_id, "<spam@example.com>");
    }
    _ => panic!("Expected cancel"),
}

let msg = ControlMessage::parse("newgroup comp.lang.rust moderated").unwrap();
match msg {
    ControlMessage::Newgroup { group, moderated } => {
        assert_eq!(group, "comp.lang.rust");
        assert!(moderated);
    }
    _ => panic!("Expected newgroup"),
}

Trait Implementations§

Source§

impl Clone for ControlMessage

Source§

fn clone(&self) -> ControlMessage

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ControlMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ControlMessage

Source§

fn eq(&self, other: &ControlMessage) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for ControlMessage

Source§

impl StructuralPartialEq for ControlMessage

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more