functor (GC : Common_types.CoreModuleSig) ->
functor (Viewmgr : Common_types.CoreModuleSig) ->
functor
(MakeImpl : functor
(Descriptor : sig
type t
val get_value :
Channel_factory.t -> Viewmgr.t
val to_gdesc : Channel_factory.t -> GC.t
end) ->
functor
(Group : AutoMakeViewmanagerToGroupInterfaceSig(GC)(Viewmgr)(Descriptor).TSig) ->
sig
val create : Proc_info.t -> Viewmgr.t
val process_create :
Descriptor.t -> Proc_info.t -> unit
val process_destroy : Descriptor.t -> unit
val process_is_valid : Descriptor.t -> unit
val process_join : Descriptor.t -> View.t -> unit
val process_leave : Descriptor.t -> unit
val process_incoming_message :
Descriptor.t -> Proc_info.t -> Iovec.t -> unit
val process_cache_reply_missing :
Descriptor.t ->
(Seqnum.t * (Proc_info.t * Iovec.t)) list list ->
unit
val process_timer_set : Timer.id -> unit
val process_timer_cancelled : Timer.id -> unit
end) ->
sig
module ViewmanagerDescriptor :
sig
type t = {
gdesc : GC.t;
vdesc : Viewmgr.t;
mutable to_group_regular :
(GC.t,
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.message
Channel_message_store.t;
mutable to_group_viewchange :
(GC.t,
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.message
Channel_message_store.t;
mutable to_group_cache :
(GC.t,
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.message
Channel_message_store.t;
}
val create :
GC.t ->
Viewmgr.t ->
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t
val to_gdesc :
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t ->
GC.t
val get_value :
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t ->
Viewmgr.t
val to_string :
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t ->
string
val hash :
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t ->
int
val equal :
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t ->
Channel_factory.AutoMakeViewmangerFromTemplate.ViewmanagerDescriptor.t ->
bool
end
type t =
ViewmanagerDescriptor.t = {
gdesc : GC.t;
vdesc : Viewmgr.t;
mutable to_group_regular :
(GC.t, t) Request_types.Viewmanager_to_group.message
Channel_message_store.t;
mutable to_group_viewchange :
(GC.t, t) Request_types.Viewmanager_to_group.message
Channel_message_store.t;
mutable to_group_cache :
(GC.t, t) Request_types.Viewmanager_to_group.message
Channel_message_store.t;
}
val create : GC.t -> Viewmgr.t -> t
val to_gdesc : t -> GC.t
val get_value : t -> Viewmgr.t
val to_string : t -> string
val hash : t -> int
val equal : t -> t -> bool
type group = GC.t
module Request :
sig
val sa_send_request :
((GC.t, ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.send_request -> unit)
Sa_var.t
val sa_receive_request :
((ViewmanagerDescriptor.t, GC.t)
Request_types.Group_to_viewmanager.receive_request ->
unit)
Sa_var.t
val send_request :
(GC.t, ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.send_request -> unit
val receive_request :
(ViewmanagerDescriptor.t, GC.t)
Request_types.Group_to_viewmanager.receive_request -> unit
end
module Impl :
sig
val retrieve_message :
(GC.t, ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.send_request ->
(GC.t, ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.message
val process_message :
(ViewmanagerDescriptor.t, GC.t)
Request_types.Group_to_viewmanager.receive_request ->
(ViewmanagerDescriptor.t, GC.t)
Request_types.Group_to_viewmanager.message -> unit
end
module DescriptorTypes :
sig
type seq_dsc
type viewmgr_dsc = ViewmanagerDescriptor.t
type transport_dsc
type group_dsc = GC.t
end
module MakeChanSrc :
functor
(Config : sig
type message
type request
module Make :
functor
(ToChannel : sig
type to_chan
type send_req = request
val send_request :
to_chan -> send_req -> unit
end) ->
sig
val start : ToChannel.to_chan -> unit
val retrieve_message :
ToChannel.to_chan -> request -> message
end
end) ->
functor (Types : sig type d_t type c_t end) ->
sig
type group_dsc = DescriptorTypes.group_dsc
type seq_dsc = DescriptorTypes.seq_dsc
type viewmgr_dsc = DescriptorTypes.viewmgr_dsc
type transport_dsc = DescriptorTypes.transport_dsc
type msg = Config.message
type req = Config.request
type s_t = unit
type d_t = Types.d_t
type c_t = Types.c_t
type dsc = s_t * d_t * c_t
val init : 'a -> 'b -> unit lazy_t
module type ToBoundedChannelSig =
sig
type to_chan = dsc
type send_req = req
val send_request : to_chan -> send_req -> unit
end
module Make :
functor (ToChannel : ToBoundedChannelSig) ->
sig
type src = dsc
type m = msg
type req = ToChannel.send_req
val start : ToChannel.to_chan -> unit
val retrieve_message :
ToChannel.to_chan -> Config.request -> Config.message
end
end
module MakeChanDest :
functor
(Config : sig
type message
type request
module Make :
functor
(FromChannel : sig
type from_chan
type receive_req = request
val receive_request :
from_chan ->
receive_req -> unit
end) ->
sig
val start : FromChannel.from_chan -> unit
val process_message :
FromChannel.from_chan ->
request -> message -> unit
end
end) ->
functor (Types : sig type s_t type c_t end) ->
sig
type group_dsc = DescriptorTypes.group_dsc
type seq_dsc = DescriptorTypes.seq_dsc
type viewmgr_dsc = DescriptorTypes.viewmgr_dsc
type transport_dsc = DescriptorTypes.transport_dsc
type msg = Config.message
type req = Config.request
type s_t = Types.s_t
type d_t = unit
type c_t = Types.c_t
type dsc = s_t * d_t * c_t
val init : 'a -> 'b -> unit lazy_t
module type FromBoundedChannelSig =
sig
type from_chan = dsc
type receive_req = req
val receive_request : from_chan -> receive_req -> unit
end
module Make :
functor (FromChannel : FromBoundedChannelSig) ->
sig
type dest = dsc
type m = msg
type req = FromChannel.receive_req
val start : FromChannel.from_chan -> unit
val process_message :
FromChannel.from_chan ->
Config.request -> Config.message -> unit
end
end
module Chan_to_group :
functor (Types : sig type d_t type c_t end) ->
sig
type group_dsc = DescriptorTypes.group_dsc
type seq_dsc = DescriptorTypes.seq_dsc
type viewmgr_dsc = DescriptorTypes.viewmgr_dsc
type transport_dsc = DescriptorTypes.transport_dsc
type msg =
(GC.t, ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.message
type req =
(GC.t, ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.send_request
type s_t = unit
type d_t = Types.d_t
type c_t = Types.c_t
type dsc = s_t * d_t * c_t
val init : 'a -> 'b -> unit lazy_t
module type ToBoundedChannelSig =
sig
type to_chan = dsc
type send_req = req
val send_request : to_chan -> send_req -> unit
end
module Make :
functor (ToChannel : ToBoundedChannelSig) ->
sig
type src = dsc
type m = msg
type req = ToChannel.send_req
val start : ToChannel.to_chan -> unit
val retrieve_message :
ToChannel.to_chan ->
(GC.t, ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.send_request ->
(GC.t, ViewmanagerDescriptor.t)
Request_types.Viewmanager_to_group.message
end
end
module Chan_from_group :
functor (Types : sig type s_t type c_t end) ->
sig
type group_dsc = DescriptorTypes.group_dsc
type seq_dsc = DescriptorTypes.seq_dsc
type viewmgr_dsc = DescriptorTypes.viewmgr_dsc
type transport_dsc = DescriptorTypes.transport_dsc
type msg =
(ViewmanagerDescriptor.t, GC.t)
Request_types.Group_to_viewmanager.message
type req =
(ViewmanagerDescriptor.t, GC.t)
Request_types.Group_to_viewmanager.receive_request
type s_t = Types.s_t
type d_t = unit
type c_t = Types.c_t
type dsc = s_t * d_t * c_t
val init : 'a -> 'b -> unit lazy_t
module type FromBoundedChannelSig =
sig
type from_chan = dsc
type receive_req = req
val receive_request : from_chan -> receive_req -> unit
end
module Make :
functor (FromChannel : FromBoundedChannelSig) ->
sig
type dest = dsc
type m = msg
type req = FromChannel.receive_req
val start : FromChannel.from_chan -> unit
val process_message :
FromChannel.from_chan ->
(ViewmanagerDescriptor.t, GC.t)
Request_types.Group_to_viewmanager.receive_request ->
(ViewmanagerDescriptor.t, GC.t)
Request_types.Group_to_viewmanager.message -> unit
end
end
end