Struct kcp::Kcp

source ·
pub struct Kcp<Output: Write> { /* private fields */ }
Expand description

KCP control

Implementations§

source§

impl<Output: Write> Kcp<Output>

source

pub fn new(conv: u32, output: Output) -> Self

Creates a KCP control object, conv must be equal in both endpoints in one connection. output is the callback object for writing.

conv represents conversation.

source

pub fn new_stream(conv: u32, output: Output) -> Self

Creates a KCP control object in stream mode, conv must be equal in both endpoints in one connection. output is the callback object for writing.

conv represents conversation.

source

pub fn move_buf(&mut self)

source

pub fn recv(&mut self, buf: &mut [u8]) -> KcpResult<usize>

Receive data from buffer

source

pub fn peeksize(&self) -> KcpResult<usize>

Check buffer size without actually consuming it

source

pub fn send(&mut self, buf: &[u8]) -> KcpResult<usize>

Send bytes into buffer

source

pub fn input_conv(&mut self)

Get conv from the next input call

source

pub fn waiting_conv(&self) -> bool

Check if Kcp is waiting for the next input

source

pub fn set_conv(&mut self, conv: u32)

Set conv value

source

pub fn conv(&self) -> u32

Get conv

source

pub fn input(&mut self, buf: &[u8]) -> KcpResult<usize>

Call this when you received a packet from raw connection

source

pub fn flush_ack(&mut self) -> KcpResult<()>

Flush pending ACKs

source

pub fn flush(&mut self) -> KcpResult<()>

Flush pending data in buffer.

source

pub fn update(&mut self, current: u32) -> KcpResult<()>

Update state every 10ms ~ 100ms.

Or you can ask check when to call this again.

source

pub fn check(&self, current: u32) -> u32

Determine when you should call update. Return when you should invoke update in millisec, if there is no input/send calling. You can call update in that time without calling it repeatly.

source

pub fn set_mtu(&mut self, mtu: usize) -> KcpResult<()>

Change MTU size, default is 1400

MTU = Maximum Transmission Unit

source

pub fn mtu(&self) -> usize

Get MTU

source

pub fn set_interval(&mut self, interval: u32)

Set check interval

source

pub fn set_nodelay(&mut self, nodelay: bool, interval: i32, resend: i32, nc: bool)

Set nodelay

fastest config: nodelay(true, 20, 2, true)

nodelay: default is disable (false) interval: internal update timer interval in millisec, default is 100ms resend: 0:disable fast resend(default), 1:enable fast resend nc: false: normal congestion control(default), true: disable congestion control

source

pub fn set_wndsize(&mut self, sndwnd: u16, rcvwnd: u16)

Set wndsize set maximum window size: sndwnd=32, rcvwnd=32 by default

source

pub fn snd_wnd(&self) -> u16

snd_wnd Send window

source

pub fn rcv_wnd(&self) -> u16

rcv_wnd Receive window

source

pub fn wait_snd(&self) -> usize

Get waitsnd, how many packet is waiting to be sent

source

pub fn rmt_wnd(&self) -> u16

Get rmt_wnd, remote window size

source

pub fn set_rx_minrto(&mut self, rto: u32)

Set rx_minrto

source

pub fn set_fast_resend(&mut self, fr: u32)

Set fastresend

source

pub fn header_len() -> usize

KCP header size

source

pub fn is_stream(&self) -> bool

Enabled stream or not

source

pub fn mss(&self) -> usize

Maximum Segment Size

source

pub fn set_maximum_resend_times(&mut self, dead_link: u32)

Set maximum resend times

Check if KCP connection is dead (resend times excceeded)

Trait Implementations§

source§

impl<Output: Write> Debug for Kcp<Output>

source§

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

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

impl<Output: Default + Write> Default for Kcp<Output>

source§

fn default() -> Kcp<Output>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<Output> RefUnwindSafe for Kcp<Output>where Output: RefUnwindSafe,

§

impl<Output> Send for Kcp<Output>where Output: Send,

§

impl<Output> Sync for Kcp<Output>where Output: Sync,

§

impl<Output> Unpin for Kcp<Output>where Output: Unpin,

§

impl<Output> UnwindSafe for Kcp<Output>where Output: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.