当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby DRbProtocol模块用法及代码示例


本文简要介绍ruby语言中 DRb::DRbProtocol模块 的用法。

Module 管理 drb 使用的底层网络协议。

默认情况下,drb 使用 DRbTCPSocket 协议。可以定义其他协议。协议必须定义以下类方法:

[open(uri, config)] Open a client connection to the server at +uri+,
                    using configuration +config+.  Return a protocol
                    instance for this connection.
[open_server(uri, config)] Open a server listening at +uri+,
                           using configuration +config+.  Return a
                           protocol instance for this listener.
[uri_option(uri, config)] Take a URI, possibly containing an option
                          component (e.g. a trailing '?param=val'),
                          and return a [uri, option] tuple.

如果 URI 不能识别它们支持的协议(例如标准Ruby 协议的“druby:”),所有这些方法都应该引发 DRbBadScheme 错误。这就是 DRbProtocol 模块如何在给定 URI 的情况下确定哪个协议实现服务于该协议。

open_server 返回的协议实例必须有以下方法:

接受

接受与服务器的新连接。返回能够与客户端通信的协议实例。

关闭

关闭服务器连接。

乌里

获取此服务器的 URI

open 返回的协议实例必须有以下方法:

send_request(参考,msg_id,arg,b)

使用给定的消息 ID 和参数向 ref 发送请求。这最容易通过调用 DRbMessage.send_request 来实现,提供位于当前协议之上的流。

recv_reply

接收来自服务器的回复并将其作为 [success-boolean, reply-value] 对返回。这最容易通过调用 DRb.recv_reply 来实现,提供位于当前协议之上的流。

活?

这种联系还存在吗?

关闭

关闭此连接。

open_server() .accept() 返回的协议实例必须具有以下方法:

recv_request

接收来自客户端的请求并返回一个 [object, message, args, block] 元组。这最容易通过调用 DRbMessage.recv_request 来实现,提供位于当前协议之上的流。

send_reply(成功,结果)

向客户发送回复。这最容易通过调用 DRbMessage.send_reply 来实现,提供位于当前协议之上的流。

关闭

关闭此连接。

使用 add_protocol 方法向 DRbProtocol 模块注册新协议。

有关其他协议的示例,请参阅 drb/unix.rb 中的 DRbUNIXSocket ,以及完整 drb 发行版中的 sample/http0.rb 和 sample/http0serv.rb 中的 HTTP0。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 DRbProtocol模块。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。