| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta name="generator" content="rustdoc"> |
| <meta name="description" content="API documentation for the Rust `UdpCodec` trait in crate `tokio_core`."> |
| <meta name="keywords" content="rust, rustlang, rust-lang, UdpCodec"> |
| |
| <title>tokio_core::net::UdpCodec - Rust</title> |
| |
| <link rel="stylesheet" type="text/css" href="../../normalize.css"> |
| <link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"> |
| |
| <link rel="stylesheet" type="text/css" href="../../dark.css"> |
| <link rel="stylesheet" type="text/css" href="../../main.css" id="themeStyle"> |
| <script src="../../storage.js"></script> |
| |
| |
| |
| |
| </head> |
| <body class="rustdoc trait"> |
| <!--[if lte IE 8]> |
| <div class="warning"> |
| This old browser is unsupported and will most likely display funky |
| things. |
| </div> |
| <![endif]--> |
| |
| |
| |
| <nav class="sidebar"> |
| <div class="sidebar-menu">☰</div> |
| |
| <p class='location'>Trait UdpCodec</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#associated-types">Associated Types</a><div class="sidebar-links"><a href="#associatedtype.In">In</a><a href="#associatedtype.Out">Out</a></div><a class="sidebar-title" href="#required-methods">Required Methods</a><div class="sidebar-links"><a href="#tymethod.decode">decode</a><a href="#tymethod.encode">encode</a></div><a class="sidebar-title" href="#implementors">Implementors</a></div><p class='location'><a href='../index.html'>tokio_core</a>::<wbr><a href='index.html'>net</a></p><script>window.sidebarCurrent = {name: 'UdpCodec', ty: 'trait', relpath: ''};</script><script defer src="sidebar-items.js"></script></div> |
| </nav> |
| |
| <div class="theme-picker"> |
| <button id="theme-picker" aria-label="Pick another theme!"> |
| <img src="../../brush.svg" width="18" alt="Pick another theme!"> |
| </button> |
| <div id="theme-choices"></div> |
| </div> |
| <script src="../../theme.js"></script> |
| <nav class="sub"> |
| <form class="search-form js-only"> |
| <div class="search-container"> |
| <input class="search-input" name="search" |
| autocomplete="off" |
| placeholder="Click or press ‘S’ to search, ‘?’ for more options…" |
| type="search"> |
| </div> |
| </form> |
| </nav> |
| |
| <section id='main' class="content"> |
| <h1 class='fqn'><span class='in-band'>Trait <a href='../index.html'>tokio_core</a>::<wbr><a href='index.html'>net</a>::<wbr><a class="trait" href=''>UdpCodec</a></span><span class='out-of-band'><span id='render-detail'> |
| <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs"> |
| [<span class='inner'>−</span>] |
| </a> |
| </span><a class='srclink' href='../../src/tokio_core/net/udp/frame.rs.html#22-51' title='goto source code'>[src]</a></span></h1> |
| <pre class='rust trait'>pub trait UdpCodec { |
| type <a href='#associatedtype.In' class="type">In</a>; |
| type <a href='#associatedtype.Out' class="type">Out</a>; |
| fn <a href='#tymethod.decode' class='fnname'>decode</a>(&mut self, src: &<a class="enum" href="https://doc.rust-lang.org/nightly/std/net/addr/enum.SocketAddr.html" title="enum std::net::addr::SocketAddr">SocketAddr</a>, buf: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>) -> <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><Self::<a class="type" href="../../tokio_core/net/trait.UdpCodec.html#associatedtype.In" title="type tokio_core::net::UdpCodec::In">In</a>>; |
| <div class='item-spacer'></div> fn <a href='#tymethod.encode' class='fnname'>encode</a>(&mut self, msg: Self::<a class="type" href="../../tokio_core/net/trait.UdpCodec.html#associatedtype.Out" title="type tokio_core::net::UdpCodec::Out">Out</a>, buf: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/std/net/addr/enum.SocketAddr.html" title="enum std::net::addr::SocketAddr">SocketAddr</a>; |
| }</pre><div class='docblock'><p>Encoding of frames via buffers.</p> |
| <p>This trait is used when constructing an instance of <code>UdpFramed</code> and provides |
| the <code>In</code> and <code>Out</code> types which are decoded and encoded from the socket, |
| respectively.</p> |
| <p>Because UDP is a connectionless protocol, the <code>decode</code> method receives the |
| address where data came from and the <code>encode</code> method is also responsible for |
| determining the remote host to which the datagram should be sent</p> |
| <p>The trait itself is implemented on a type that can track state for decoding |
| or encoding, which is particularly useful for streaming parsers. In many |
| cases, though, this type will simply be a unit struct (e.g. <code>struct HttpCodec</code>).</p> |
| </div> |
| <h2 id='associated-types' class='small-section-header'> |
| Associated Types<a href='#associated-types' class='anchor'></a> |
| </h2> |
| <div class='methods'> |
| <h3 id='associatedtype.In' class='method'><span id='In.t' class='invisible'><code>type <a href='#associatedtype.In' class="type">In</a></code></span></h3><div class='docblock'><p>The type of decoded frames.</p> |
| </div><h3 id='associatedtype.Out' class='method'><span id='Out.t' class='invisible'><code>type <a href='#associatedtype.Out' class="type">Out</a></code></span></h3><div class='docblock'><p>The type of frames to be encoded.</p> |
| </div></div> |
| <h2 id='required-methods' class='small-section-header'> |
| Required Methods<a href='#required-methods' class='anchor'></a> |
| </h2> |
| <div class='methods'> |
| <h3 id='tymethod.decode' class='method'><span id='decode.v' class='invisible'><code>fn <a href='#tymethod.decode' class='fnname'>decode</a>(&mut self, src: &<a class="enum" href="https://doc.rust-lang.org/nightly/std/net/addr/enum.SocketAddr.html" title="enum std::net::addr::SocketAddr">SocketAddr</a>, buf: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>) -> <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><Self::<a class="type" href="../../tokio_core/net/trait.UdpCodec.html#associatedtype.In" title="type tokio_core::net::UdpCodec::In">In</a>></code></span></h3><div class='docblock'><p>Attempts to decode a frame from the provided buffer of bytes.</p> |
| <p>This method is called by <code>UdpFramed</code> on a single datagram which has been |
| read from a socket. The <code>buf</code> argument contains the data that was |
| received from the remote address, and <code>src</code> is the address the data came |
| from. Note that typically this method should require the entire contents |
| of <code>buf</code> to be valid or otherwise return an error with trailing data.</p> |
| <p>Finally, if the bytes in the buffer are malformed then an error is |
| returned indicating why. This informs <code>Framed</code> that the stream is now |
| corrupt and should be terminated.</p> |
| </div><h3 id='tymethod.encode' class='method'><span id='encode.v' class='invisible'><code>fn <a href='#tymethod.encode' class='fnname'>encode</a>(&mut self, msg: Self::<a class="type" href="../../tokio_core/net/trait.UdpCodec.html#associatedtype.Out" title="type tokio_core::net::UdpCodec::Out">Out</a>, buf: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/std/net/addr/enum.SocketAddr.html" title="enum std::net::addr::SocketAddr">SocketAddr</a></code></span></h3><div class='docblock'><p>Encodes a frame into the buffer provided.</p> |
| <p>This method will encode <code>msg</code> into the byte buffer provided by <code>buf</code>. |
| The <code>buf</code> provided is an internal buffer of the <code>Framed</code> instance and |
| will be written out when possible.</p> |
| <p>The encode method also determines the destination to which the buffer |
| should be directed, which will be returned as a <code>SocketAddr</code>.</p> |
| </div></div> |
| <h2 id='implementors' class='small-section-header'> |
| Implementors<a href='#implementors' class='anchor'></a> |
| </h2> |
| <ul class='item-list' id='implementors-list'> |
| </ul><script type="text/javascript" async |
| src="../../implementors/tokio_core/net/trait.UdpCodec.js"> |
| </script></section> |
| <section id='search' class="content hidden"></section> |
| |
| <section class="footer"></section> |
| |
| <aside id="help" class="hidden"> |
| <div> |
| <h1 class="hidden">Help</h1> |
| |
| <div class="shortcuts"> |
| <h2>Keyboard Shortcuts</h2> |
| |
| <dl> |
| <dt><kbd>?</kbd></dt> |
| <dd>Show this help dialog</dd> |
| <dt><kbd>S</kbd></dt> |
| <dd>Focus the search field</dd> |
| <dt><kbd>↑</kbd></dt> |
| <dd>Move up in search results</dd> |
| <dt><kbd>↓</kbd></dt> |
| <dd>Move down in search results</dd> |
| <dt><kbd>↹</kbd></dt> |
| <dd>Switch tab</dd> |
| <dt><kbd>⏎</kbd></dt> |
| <dd>Go to active search result</dd> |
| <dt><kbd>+</kbd></dt> |
| <dd>Expand all sections</dd> |
| <dt><kbd>-</kbd></dt> |
| <dd>Collapse all sections</dd> |
| </dl> |
| </div> |
| |
| <div class="infos"> |
| <h2>Search Tricks</h2> |
| |
| <p> |
| Prefix searches with a type followed by a colon (e.g. |
| <code>fn:</code>) to restrict the search to a given type. |
| </p> |
| |
| <p> |
| Accepted types are: <code>fn</code>, <code>mod</code>, |
| <code>struct</code>, <code>enum</code>, |
| <code>trait</code>, <code>type</code>, <code>macro</code>, |
| and <code>const</code>. |
| </p> |
| |
| <p> |
| Search functions by type signature (e.g. |
| <code>vec -> usize</code> or <code>* -> vec</code>) |
| </p> |
| </div> |
| </div> |
| </aside> |
| |
| |
| |
| <script> |
| window.rootPath = "../../"; |
| window.currentCrate = "tokio_core"; |
| </script> |
| <script src="../../main.js"></script> |
| <script defer src="../../search-index.js"></script> |
| </body> |
| </html> |