capnp-0.10.0.1:Haskell的Cap'n协议
安全哈斯克尔
语言哈斯克尔2010

封顶。卢比。服务器

说明

此上下文中的术语服务器是指处理方法调用的线程特定功能(capnproto rpc协议本身没有以下概念客户端和服务器)。

简介

文档

莫纳德m=>服务器月|a->m哪里 来源 #

可充当capnproto服务器的对象的基类。

最小完整定义

没有什么

方法

停堆,停堆::a->m()来源 #

当删除对服务器的最后一个活动引用时调用。

打开包装::可输入b=>a->也许 吧b条来源 #

尝试提取给定类型的值。默认实现总是失败(返回没有什么). 如果实例选择实现这样,就可以在客户机上使用“反射”在本地服务器上动态展开服务器值。A典型实现将只调用Typeable的铸造方法,但此不必如此--服务器可能希望允许本地对等机打开一些与服务器访问的数据不完全相同的值至。

实例

实例详细信息
服务器 IO(输入输出)(持久sturdyRef所有者) 来源 # 
实例详细信息

定义于封顶。Gen.Capmp公司。坚持不懈。

服务器 IO(输入输出)(RealmGateway公司internalRef-externalRef-internalOwner externalOwner) 来源 # 
实例详细信息

定义于封顶。发电机电容器。坚持不懈。

方法

停堆,停堆::RealmGateway公司internalRef externalRef internalOwner externalOwner->IO(输入输出)()来源 #

打开包装::可输入b=>RealmGateway公司internalRef externalRef internalOwner externalOwner->也许 吧b条来源 #

数据 服务器操作来源 #

接收和处理方法调用所需的操作,即。以实现对象。它在一元上下文中参数化在其中为方法提供服务。

建造师

服务器操作 

领域

数据 来电通 来源 #

A类来电通包含有关方法调用的信息。

建造师

来电通 

领域

运行服务器::Q来电通->服务器操作 IO(输入输出)->IO(输入输出)()来源 #

处理给定对象的传入消息。

接受要处理的消息队列,以及服务器操作用来处理它们。当它收到停止消息。

处理方法

数据 方法处理程序百万卢比来源 #

方法处理程序百万卢比使用参数处理方法调用和返回类型第页,在monad中.

该库通过抽象类型表示方法处理程序方法处理程序,参数化了参数()和返回(第页)类型,以及运行它的单子上下文(). 这使我们能够为实际处理方法提供不同的策略;那里是构造这些处理程序的各种帮助函数。

在某些情况下,我们可能会额外提供处理程序,以提供:

  • 直接使用低级数据类型。
  • 异步响应方法调用,允许后面的方法在当前调用完成之前处理的调用。

使用高级表示

pureHandler:: (单打独斗米,单体STM米,PrimMonad公司m、 秒~PrimState(主状态)米,去中心化第页,来自Ptr'施工(Cerial公司'施工p) ,Cerialize(证书化)第r页,ToStruct公司('静音s)(Cerial公司('静音s) r)=>(上限->p->m r)->上限->方法处理程序百万卢比来源 #

pureHandlerf盖是一个方法处理程序它调用一个函数如果接受接收器和参数类型高级API,并返回返回类型。

使用低级表示

原始处理程序:: (单打独斗米,单体STM米,PrimMonad公司m、 秒~PrimState(主状态)米,去中心化第页,来自Ptr'施工(Cerial公司'施工p) ,去中心化第页,共页,ToStruct结构'施工(Cerial公司'施工r) )=>(上限->Cerial公司'施工p->m(Cerial公司'施工r) )->盖子->方法处理程序百万卢比来源 #

喜欢pureHandler,除了参数和返回值使用低级表示。

rawAsyncHandler:: (单打独斗米,单体STM米,PrimMonad公司m、 秒~PrimState(主状态)米,去中心化第页,自Ptr'施工(Cerial公司'施工p) ,取消资格第页,共页,ToStruct结构'施工(Cerial公司'施工r) )=>(上限->Cerial公司'施工p->Fulfiller公司(Cerial公司'施工r) ->m())->盖->方法处理程序百万卢比来源 #

喜欢原始处理程序,除了结果需要一个实现者,而不是返回它。这允许在某个时间提供结果方法返回后,可以为其他方法提供服务在结果可用之前调用。

总是抛出异常

methodThrow方法抛出::莫纳迪奥m=>例外->方法处理程序百万卢比来源 #

methodThrow方法抛出exn(外部网络)是一个方法处理程序总是抛出exn(外部网络).

方法未实现::莫纳迪奥m=>方法处理程序百万卢比来源 #

A类方法处理程序总是抛出一个未实现的例外。

使用非类型化数据

非类型处理程序:: (也许 吧(Ptr公司'施工) ->Fulfiller公司(也许 吧(Ptr公司'施工))->米()->方法处理程序米(也许 吧(Ptr公司'施工)) (也许 吧(Ptr公司'施工))来源 #

从接受非类型化的函数构造方法处理程序方法参数的指针,以及Fulfiller公司它接受方法返回值的非类型化指针。

到非类型处理程序::方法处理程序百万卢比->方法处理程序米(也许 吧(Ptr公司'施工)) (也许 吧(Ptr公司'施工))来源 #

转换方法处理程序将任何参数和返回类型转换为处理非类型指针的指针。

调用方法