pub struct Versions { /* private fields */ }Expand description
A Versions message begins channel negotiation.
Every channel must begin by sending a Versions message. This message lists the link protocol versions that this Tor implementation supports.
Note that we should never actually send Versions cells using the usual channel cell encoding: Versions cells always use two-byte circuit IDs, whereas all the other cell types use four-byte circuit IDs [assuming a non-obsolete version is negotiated].
Implementations§
source§impl Versions
impl Versions
sourcepub fn new<B>(vs: B) -> Result<Self>where
B: Into<Vec<u16>>,
pub fn new<B>(vs: B) -> Result<Self>where B: Into<Vec<u16>>,
Construct a new Versions message using a provided list of link protocols.
Returns an error if the list of versions is too long.
sourcepub fn encode_for_handshake(self) -> EncodeResult<Vec<u8>>
pub fn encode_for_handshake(self) -> EncodeResult<Vec<u8>>
Encode this VERSIONS cell in the manner expected for a handshake.
(That’s different from a standard cell encoding, since we have not negotiated versions yet, and so our circuit-ID length is an obsolete 2 bytes).
Return the best (numerically highest) link protocol that is shared by this versions cell and my_protos.
Trait Implementations§
source§impl Body for Versions
impl Body for Versions
source§fn encode_onto<W: Writer + ?Sized>(self, w: &mut W) -> EncodeResult<()>
fn encode_onto<W: Writer + ?Sized>(self, w: &mut W) -> EncodeResult<()>
w. Read more