本文简要介绍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 DRb.regist_server用法及代码示例
- Ruby DRb模块用法及代码示例
- Ruby DRbSSLSocket.open_server用法及代码示例
- Ruby DRbSSLSocket.open用法及代码示例
- Ruby Date.valid_civil?用法及代码示例
- Ruby DateTime jisx0301()用法及代码示例
- Ruby Date cwday()用法及代码示例
- Ruby Date ctime()用法及代码示例
- Ruby Date.gregorian?用法及代码示例
- Ruby DH.public_key用法及代码示例
- Ruby Date asctime()用法及代码示例
- Ruby DateTime类用法及代码示例
- Ruby DateTime.hour用法及代码示例
- Ruby DateTime.jd用法及代码示例
- Ruby DateTime.zone用法及代码示例
- Ruby DateTime ordinal()用法及代码示例
- Ruby DateTime.second用法及代码示例
- Ruby Date.strftime用法及代码示例
- Ruby Digest.update用法及代码示例
- Ruby DSA.export用法及代码示例
- Ruby DSA.to_pem用法及代码示例
- Ruby DNS.new用法及代码示例
- Ruby Document.new用法及代码示例
- Ruby Date.valid_ordinal?用法及代码示例
- Ruby DateTime to_datetime()用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 DRbProtocol模块。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。