Skip to content

Commit a99b46d

Browse files
committed
Deploying to master from @ actix/actix-website@997fb14 🚀
1 parent 622db7d commit a99b46d

File tree

22 files changed

+29
-32
lines changed

22 files changed

+29
-32
lines changed

docs/application/index.html

Lines changed: 6 additions & 7 deletions
Large diffs are not rendered by default.

docs/autoreload/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!doctype html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta http-equiv=x-ua-compatible content="ie=edge"><link rel=stylesheet href=https://actix.rs/css/bootstrap-reboot.css><link rel=stylesheet href=https://actix.rs/css/bootstrap.css><link rel=stylesheet href=https://actix.rs/css/font-awesome.min.css><link rel=stylesheet href=https://actix.rs/css/actix.css><link rel=stylesheet href=https://actix.rs/css/highlight.css><link rel=icon href=https://actix.rs/favicon.ico title=actix><title>Auto-Reloading</title></head><body><header class="navbar navbar-light navbar-toggleable-md bd-navbar"><nav class=actix-main-nav><div class="d-flex justify-content-between hidden-lg-up"><a href=https://actix.rs/ class=navbar-brand><img src=https://actix.rs/img/logo-nav.png class=align-middle alt></a>
22
<button class="navbar-toggle collapsed" type=button data-toggle=collapse data-target=#actix-main-nav aria-label="Toggle navigation" aria-controls=actix-main-nav aria-expanded=false>
33
<span class=navbar-toggler-icon></span></button></div><div class="navbar-collapse collapse" id=actix-main-nav><ul class="nav navbar-nav"><li class="nav-item hd-lg-down"><a class=navbar-brand href=https://actix.rs/><img src=https://actix.rs/img/logo-nav.png class=align-middle alt></a></li><li class=nav-item><a class=nav-link href=https://actix.rs/>Home</a></li><li class=nav-item><a class=nav-link href=https://actix.rs/docs/>Documentation</a></li><li class=nav-item><a class=nav-link href=https://actix.rs/community/>Community</a></li><li class=nav-item><a class=nav-link href=https://actix.rs/code/>Code</a></li></ul></div></nav></header><div class=actix-pageheader><div class=container><h1 class=display-4>Auto-Reloading</h1></div></div><div class="container actix-docs"><div class=row><div class=col-md-3><button class="btn doctoggle" type=button data-toggle=collapse data-target=#collapsing-docnav aria-expanded=false aria-controls=collapsing-docnav>
4-
Toggle navigation</button><nav class="leftnav collapse show" id=collapsing-docnav><div><h5>Introduction</h5><div><ul class=nav><li><a href=https://actix.rs/docs/>Welcome</a></li><li><a href=https://actix.rs/docs/whatis/>What is Actix</a></li></ul></div><h5>Basics</h5><div><ul class=nav><li><a href=https://actix.rs/docs/getting-started/>Getting Started</a></li><li><a href=https://actix.rs/docs/application/>Application</a></li><li><a href=https://actix.rs/docs/server/>Server</a></li><li><a href=https://actix.rs/docs/handlers/>Handlers</a></li><li><a href=https://actix.rs/docs/extractors/>Extractors</a></li></ul></div><h5>Advanced</h5><div><ul class=nav><li><a href=https://actix.rs/docs/errors/>Errors</a></li><li><a href=https://actix.rs/docs/url-dispatch/>URL Dispatch</a></li><li><a href=https://actix.rs/docs/request/>Requests</a></li><li><a href=https://actix.rs/docs/response/>Responses</a></li><li><a href=https://actix.rs/docs/testing/>Testing</a></li><li><a href=https://actix.rs/docs/middleware/>Middleware</a></li><li><a href=https://actix.rs/docs/static-files/>Static Files</a></li></ul></div><h5>Protocols</h5><div><ul class=nav><li><a href=https://actix.rs/docs/websockets/>Websockets</a></li><li><a href=https://actix.rs/docs/http2/>HTTP/2</a></li></ul></div><h5>Patterns</h5><div><ul class=nav><li class=active><a href=https://actix.rs/docs/autoreload/>Auto-Reloading</a></li><li><a href=https://actix.rs/docs/databases/>Databases</a></li></ul></div><h5>Diagrams</h5><div><ul class=nav><li><a href=https://actix.rs/docs/http_server_init/>HTTP Server Initialization</a></li><li><a href=https://actix.rs/docs/conn_lifecycle/>Connection Lifecycle</a></li></ul></div><h5>API Documentation</h5><div><ul class=nav><li><a href=https://docs.rs/actix target=view_window>actix <span class="fa fa-external-link"></span></a></li><li><a href=https://docs.rs/actix-web/ target=view_window>actix-web <span class="fa fa-external-link"></span></a></li></ul></div></div></nav></div><div class=col-md-9><div class=actix-content><h1 id=auto-reloading-development-server>Auto-Reloading Development Server</h1><p>During development it can be very handy to have cargo automatically recompile the code on changes. This can be accomplished very easily by using <a href=https://github.com/passcod/cargo-watch><code>cargo-watch</code></a>.</p><div class=highlight><pre class=chroma><code class=language-sh data-lang=sh>cargo watch -x <span class=s1>&#39;run --bin app&#39;</span>
4+
Toggle navigation</button><nav class="leftnav collapse show" id=collapsing-docnav><div><h5>Introduction</h5><div><ul class=nav><li><a href=https://actix.rs/docs/>Welcome</a></li><li><a href=https://actix.rs/docs/whatis/>What is Actix Web</a></li></ul></div><h5>Basics</h5><div><ul class=nav><li><a href=https://actix.rs/docs/getting-started/>Getting Started</a></li><li><a href=https://actix.rs/docs/application/>Application</a></li><li><a href=https://actix.rs/docs/server/>Server</a></li><li><a href=https://actix.rs/docs/handlers/>Handlers</a></li><li><a href=https://actix.rs/docs/extractors/>Extractors</a></li></ul></div><h5>Advanced</h5><div><ul class=nav><li><a href=https://actix.rs/docs/errors/>Errors</a></li><li><a href=https://actix.rs/docs/url-dispatch/>URL Dispatch</a></li><li><a href=https://actix.rs/docs/request/>Requests</a></li><li><a href=https://actix.rs/docs/response/>Responses</a></li><li><a href=https://actix.rs/docs/testing/>Testing</a></li><li><a href=https://actix.rs/docs/middleware/>Middleware</a></li><li><a href=https://actix.rs/docs/static-files/>Static Files</a></li></ul></div><h5>Protocols</h5><div><ul class=nav><li><a href=https://actix.rs/docs/websockets/>Websockets</a></li><li><a href=https://actix.rs/docs/http2/>HTTP/2</a></li></ul></div><h5>Patterns</h5><div><ul class=nav><li class=active><a href=https://actix.rs/docs/autoreload/>Auto-Reloading</a></li><li><a href=https://actix.rs/docs/databases/>Databases</a></li></ul></div><h5>Diagrams</h5><div><ul class=nav><li><a href=https://actix.rs/docs/http_server_init/>HTTP Server Initialization</a></li><li><a href=https://actix.rs/docs/conn_lifecycle/>Connection Lifecycle</a></li></ul></div><h5>API Documentation</h5><div><ul class=nav><li><a href=https://docs.rs/actix target=view_window>actix <span class="fa fa-external-link"></span></a></li><li><a href=https://docs.rs/actix-web/ target=view_window>actix-web <span class="fa fa-external-link"></span></a></li></ul></div></div></nav></div><div class=col-md-9><div class=actix-content><h1 id=auto-reloading-development-server>Auto-Reloading Development Server</h1><p>During development it can be very handy to have cargo automatically recompile the code on changes. This can be accomplished very easily by using <a href=https://github.com/passcod/cargo-watch><code>cargo-watch</code></a>.</p><div class=highlight><pre class=chroma><code class=language-sh data-lang=sh>cargo watch -x <span class=s1>&#39;run --bin app&#39;</span>
55
</code></pre></div><h2 id=historical-note>Historical Note</h2><p>An old version of this page recommended using a combination of systemfd and listenfd, but this has many gotchas and was difficult to integrate properly, especially when part of a broader development workflow. We consider <a href=https://github.com/passcod/cargo-watch><code>cargo-watch</code></a> to be sufficient for auto-reloading purposes.</p><div class=github-edit><a class="fa fa-github" href=https://github.com/actix/actix-website/tree/master/content/docs/autoreload.md>Edit on GitHub</a></div><div class=actix-next><b>Next up</b>: <a href=/docs/databases/>Databases</a></div></div></div></div></div><footer class=actix-footer><div class="text-muted actix-footer-gray d-flex justify-content-between"><div class=actix-footer-info>Copyright © 2022 The Actix Team</div><div class=actix-footer-social><a href=https://github.com/actix class=text-muted><i class="fa fa-github" aria-hidden=true></i></a></div></div></footer><script src=https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js integrity=sha384-3ceskX3iaEnIogmQchP8opvBy3Mi7Ce34nWjpBIwVTHfGYWQS9jwHDVRnpKKHJg7 crossorigin=anonymous></script><script src=https://cdnjs.cloudflare.com/ajax/libs/tether/1.3.7/js/tether.min.js integrity=sha384-XTs3FgkjiBgo8qjEjBk0tGmf3wPrWtA6coPfQDfFEY8AnYJwjalXCiosYRBIBZX8 crossorigin=anonymous></script><script src=https://actix.rs/js/bootstrap.min.js></script><script src=https://actix.rs/js/actix.js></script></body></html>

docs/conn_lifecycle/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!doctype html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta http-equiv=x-ua-compatible content="ie=edge"><link rel=stylesheet href=https://actix.rs/css/bootstrap-reboot.css><link rel=stylesheet href=https://actix.rs/css/bootstrap.css><link rel=stylesheet href=https://actix.rs/css/font-awesome.min.css><link rel=stylesheet href=https://actix.rs/css/actix.css><link rel=stylesheet href=https://actix.rs/css/highlight.css><link rel=icon href=https://actix.rs/favicon.ico title=actix><title>Connection Lifecycle</title></head><body><header class="navbar navbar-light navbar-toggleable-md bd-navbar"><nav class=actix-main-nav><div class="d-flex justify-content-between hidden-lg-up"><a href=https://actix.rs/ class=navbar-brand><img src=https://actix.rs/img/logo-nav.png class=align-middle alt></a>
22
<button class="navbar-toggle collapsed" type=button data-toggle=collapse data-target=#actix-main-nav aria-label="Toggle navigation" aria-controls=actix-main-nav aria-expanded=false>
33
<span class=navbar-toggler-icon></span></button></div><div class="navbar-collapse collapse" id=actix-main-nav><ul class="nav navbar-nav"><li class="nav-item hd-lg-down"><a class=navbar-brand href=https://actix.rs/><img src=https://actix.rs/img/logo-nav.png class=align-middle alt></a></li><li class=nav-item><a class=nav-link href=https://actix.rs/>Home</a></li><li class=nav-item><a class=nav-link href=https://actix.rs/docs/>Documentation</a></li><li class=nav-item><a class=nav-link href=https://actix.rs/community/>Community</a></li><li class=nav-item><a class=nav-link href=https://actix.rs/code/>Code</a></li></ul></div></nav></header><div class=actix-pageheader><div class=container><h1 class=display-4>Connection Lifecycle</h1></div></div><div class="container actix-docs"><div class=row><div class=col-md-3><button class="btn doctoggle" type=button data-toggle=collapse data-target=#collapsing-docnav aria-expanded=false aria-controls=collapsing-docnav>
4-
Toggle navigation</button><nav class="leftnav collapse show" id=collapsing-docnav><div><h5>Introduction</h5><div><ul class=nav><li><a href=https://actix.rs/docs/>Welcome</a></li><li><a href=https://actix.rs/docs/whatis/>What is Actix</a></li></ul></div><h5>Basics</h5><div><ul class=nav><li><a href=https://actix.rs/docs/getting-started/>Getting Started</a></li><li><a href=https://actix.rs/docs/application/>Application</a></li><li><a href=https://actix.rs/docs/server/>Server</a></li><li><a href=https://actix.rs/docs/handlers/>Handlers</a></li><li><a href=https://actix.rs/docs/extractors/>Extractors</a></li></ul></div><h5>Advanced</h5><div><ul class=nav><li><a href=https://actix.rs/docs/errors/>Errors</a></li><li><a href=https://actix.rs/docs/url-dispatch/>URL Dispatch</a></li><li><a href=https://actix.rs/docs/request/>Requests</a></li><li><a href=https://actix.rs/docs/response/>Responses</a></li><li><a href=https://actix.rs/docs/testing/>Testing</a></li><li><a href=https://actix.rs/docs/middleware/>Middleware</a></li><li><a href=https://actix.rs/docs/static-files/>Static Files</a></li></ul></div><h5>Protocols</h5><div><ul class=nav><li><a href=https://actix.rs/docs/websockets/>Websockets</a></li><li><a href=https://actix.rs/docs/http2/>HTTP/2</a></li></ul></div><h5>Patterns</h5><div><ul class=nav><li><a href=https://actix.rs/docs/autoreload/>Auto-Reloading</a></li><li><a href=https://actix.rs/docs/databases/>Databases</a></li></ul></div><h5>Diagrams</h5><div><ul class=nav><li><a href=https://actix.rs/docs/http_server_init/>HTTP Server Initialization</a></li><li class=active><a href=https://actix.rs/docs/conn_lifecycle/>Connection Lifecycle</a></li></ul></div><h5>API Documentation</h5><div><ul class=nav><li><a href=https://docs.rs/actix target=view_window>actix <span class="fa fa-external-link"></span></a></li><li><a href=https://docs.rs/actix-web/ target=view_window>actix-web <span class="fa fa-external-link"></span></a></li></ul></div></div></nav></div><div class=col-md-9><div class=actix-content><h1 id=architecture-overview>Architecture overview</h1><p>After Server has started listening to all sockets, <a href=https://github.com/actix/actix-net/blob/master/actix-server/src/accept.rs><code>Accept</code></a> and <a href=https://github.com/actix/actix-net/blob/master/actix-server/src/worker.rs><code>Worker</code></a> are two main loops responsible for processing incoming client connections.</p><p>Once connection accepted Application level protocol processing happens in a protocol specific <a href=https://github.com/actix/actix-web/blob/master/actix-http/src/h1/dispatcher.rs><code>Dispatcher</code></a> loop spawned from <a href=https://github.com/actix/actix-net/blob/master/actix-server/src/worker.rs><code>Worker</code></a>.</p><pre><code>Please note, below diagrams are outlining happy-path scenarios only.
4+
Toggle navigation</button><nav class="leftnav collapse show" id=collapsing-docnav><div><h5>Introduction</h5><div><ul class=nav><li><a href=https://actix.rs/docs/>Welcome</a></li><li><a href=https://actix.rs/docs/whatis/>What is Actix Web</a></li></ul></div><h5>Basics</h5><div><ul class=nav><li><a href=https://actix.rs/docs/getting-started/>Getting Started</a></li><li><a href=https://actix.rs/docs/application/>Application</a></li><li><a href=https://actix.rs/docs/server/>Server</a></li><li><a href=https://actix.rs/docs/handlers/>Handlers</a></li><li><a href=https://actix.rs/docs/extractors/>Extractors</a></li></ul></div><h5>Advanced</h5><div><ul class=nav><li><a href=https://actix.rs/docs/errors/>Errors</a></li><li><a href=https://actix.rs/docs/url-dispatch/>URL Dispatch</a></li><li><a href=https://actix.rs/docs/request/>Requests</a></li><li><a href=https://actix.rs/docs/response/>Responses</a></li><li><a href=https://actix.rs/docs/testing/>Testing</a></li><li><a href=https://actix.rs/docs/middleware/>Middleware</a></li><li><a href=https://actix.rs/docs/static-files/>Static Files</a></li></ul></div><h5>Protocols</h5><div><ul class=nav><li><a href=https://actix.rs/docs/websockets/>Websockets</a></li><li><a href=https://actix.rs/docs/http2/>HTTP/2</a></li></ul></div><h5>Patterns</h5><div><ul class=nav><li><a href=https://actix.rs/docs/autoreload/>Auto-Reloading</a></li><li><a href=https://actix.rs/docs/databases/>Databases</a></li></ul></div><h5>Diagrams</h5><div><ul class=nav><li><a href=https://actix.rs/docs/http_server_init/>HTTP Server Initialization</a></li><li class=active><a href=https://actix.rs/docs/conn_lifecycle/>Connection Lifecycle</a></li></ul></div><h5>API Documentation</h5><div><ul class=nav><li><a href=https://docs.rs/actix target=view_window>actix <span class="fa fa-external-link"></span></a></li><li><a href=https://docs.rs/actix-web/ target=view_window>actix-web <span class="fa fa-external-link"></span></a></li></ul></div></div></nav></div><div class=col-md-9><div class=actix-content><h1 id=architecture-overview>Architecture overview</h1><p>After Server has started listening to all sockets, <a href=https://github.com/actix/actix-net/blob/master/actix-server/src/accept.rs><code>Accept</code></a> and <a href=https://github.com/actix/actix-net/blob/master/actix-server/src/worker.rs><code>Worker</code></a> are two main loops responsible for processing incoming client connections.</p><p>Once connection accepted Application level protocol processing happens in a protocol specific <a href=https://github.com/actix/actix-web/blob/master/actix-http/src/h1/dispatcher.rs><code>Dispatcher</code></a> loop spawned from <a href=https://github.com/actix/actix-net/blob/master/actix-server/src/worker.rs><code>Worker</code></a>.</p><pre><code>Please note, below diagrams are outlining happy-path scenarios only.
55
</code></pre><p><img src=https://actix.rs/img/diagrams/connection_overview.svg alt></p><h2 id=accept-loop-in-more-detail>Accept loop in more detail</h2><p><img src=https://actix.rs/img/diagrams/connection_accept.svg alt></p><p>Most of code implementation resides in <a href=https://crates.io/crates/actix-server><code>actix-server</code></a> crate for struct <a href=https://github.com/actix/actix-net/blob/master/actix-server/src/accept.rs><code>Accept</code></a>.</p><h2 id=worker-loop-in-more-detail>Worker loop in more detail</h2><p><img src=https://actix.rs/img/diagrams/connection_worker.svg alt></p><p>Most of code implementation resides in <a href=https://crates.io/crates/actix-server><code>actix-server</code></a> crate for struct <a href=https://github.com/actix/actix-net/blob/master/actix-server/src/worker.rs><code>Worker</code></a>.</p><h2 id=request-loop-roughly>Request loop roughly</h2><p><img src=https://actix.rs/img/diagrams/connection_request.svg alt></p><p>Most of code implementation for request loop resides in <a href=https://crates.io/crates/actix-web><code>actix-web</code></a> and <a href=https://crates.io/crates/actix-http><code>actix-http</code></a> crates.</p><div class=github-edit><a class="fa fa-github" href=https://github.com/actix/actix-website/tree/master/content/docs/conn_lifecycle.md>Edit on GitHub</a></div></div></div></div></div><footer class=actix-footer><div class="text-muted actix-footer-gray d-flex justify-content-between"><div class=actix-footer-info>Copyright © 2022 The Actix Team</div><div class=actix-footer-social><a href=https://github.com/actix class=text-muted><i class="fa fa-github" aria-hidden=true></i></a></div></div></footer><script src=https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js integrity=sha384-3ceskX3iaEnIogmQchP8opvBy3Mi7Ce34nWjpBIwVTHfGYWQS9jwHDVRnpKKHJg7 crossorigin=anonymous></script><script src=https://cdnjs.cloudflare.com/ajax/libs/tether/1.3.7/js/tether.min.js integrity=sha384-XTs3FgkjiBgo8qjEjBk0tGmf3wPrWtA6coPfQDfFEY8AnYJwjalXCiosYRBIBZX8 crossorigin=anonymous></script><script src=https://actix.rs/js/bootstrap.min.js></script><script src=https://actix.rs/js/actix.js></script></body></html>

0 commit comments

Comments
 (0)