Erlang/Elixir Erlang/OTP 定义 behaviour

helapu · 2017年07月09日 · 最后由 chenge 回复于 2017年07月09日 · 3692 次阅读

behaviour_info 函数

大概从 Erlang17.0 开始吧,有些变化。 在自定义 behaviour 的时候,在之前需要定义一个函数:behaviour_info 函数来返回需要满足的函数签名。但是现在这个函数已经被移到 stdlib 了。 在 sasl-3.0.2 里面可以找到如下注释

%%% The behaviour_info functions have been moved to erl_internal in stdlib.

在 cowboy 里面,来看一下如何定义一个 behaviour,这个 cowboy_sub_protocol 可以处理从 http 协议升级到 websocket 协议。


-module(cowboy_sub_protocol).

-callback upgrade(Req, Env, module(), any())
    -> {ok, Req, Env} | {suspend, module(), atom(), [any()]} | {stop, Req}
    when Req::cowboy_req:req(), Env::cowboy_middleware:env().

-callback upgrade(Req, Env, module(), any(), any())
    -> {ok, Req, Env} | {suspend, module(), atom(), [any()]} | {stop, Req}
    when Req::cowboy_req:req(), Env::cowboy_middleware:env().

这里便有了一个 cowboy_sub_protocol

```erlang

格式化代码会是彩色的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号