path: root/README.md
diff options
authorLoïc Hoguin <[email protected]>2011-04-03 00:21:47 +0200
committerLoïc Hoguin <[email protected]>2011-04-03 00:21:47 +0200
commit718baffa3c8cc033e06d824a7f47bc65c9b5cd74 (patch)
tree635daf50f85d614dbcb301be756560f5d0d51662 /README.md
parente4da6956fceea1af8e2cdf9fece0e014576ab43c (diff)
Make Cowboy an OTP application again, properly this time.
As requested by many people on IRC Cowboy is now a proper OTP application to support soft code upgrades. It should also be easier to start and stop listeners now using cowboy:start_listener/6 and cowboy:stop_listener/1.
Diffstat (limited to 'README.md')
1 files changed, 16 insertions, 19 deletions
diff --git a/README.md b/README.md
index c8e9f9f..c106cf0 100644
--- a/README.md
+++ b/README.md
@@ -33,8 +33,8 @@ Embedding Cowboy
Getting Started
-Cowboy provides an anonymous listener supervisor that you can directly embed
-in your application's supervision tree.
+Cowboy can be started and stopped like any other application. However, the
+Cowboy application do not start any listener, those must be started manually.
A listener is a special kind of supervisor that handles a pool of acceptor
processes. It also manages all its associated request processes. This allows
@@ -48,25 +48,22 @@ before you can start a listener supervisor.
For HTTP applications the transport can be either TCP or SSL for HTTP and
HTTPS respectively. On the other hand, the protocol is of course HTTP.
+You can start and stop listeners by calling cowboy:start_listener and
+cowboy:stop_listener respectively. It is your responsability to give each
+listener a unique name.
Code speaks more than words:
- -module(my_app).
- -behaviour(application).
- -export([start/2, stop/1]).
- start(_Type, _Args) ->
- Dispatch = [
- %% {Host, list({Path, Handler, Opts})}
- {'_', [{'_', my_handler, []}]}
- ],
- %% NbAcceptors, Transport, TransOpts, Protocol, ProtoOpts
- cowboy_listener_sup:start_link(100,
- cowboy_tcp_transport, [{port, 8080}],
- cowboy_http_protocol, [{dispatch, Dispatch}]
- ).
- stop(_State) ->
- ok.
+ application:start(cowboy),
+ Dispatch = [
+ %% {Host, list({Path, Handler, Opts})}
+ {'_', [{'_', my_handler, []}]}
+ ],
+ %% Name, NbAcceptors, Transport, TransOpts, Protocol, ProtoOpts
+ cowboy:start_listener(http, 100,
+ cowboy_tcp_transport, [{port, 8080}],
+ cowboy_http_protocol, [{dispatch, Dispatch}]
+ ).
You must also write the `my_handler` module to process requests. You can
use one of the predefined handlers or write your own. An hello world HTTP