sig
type id = string
module type Job =
sig
type input
type key
type inter
type output
val name : MapReduce.id
val map :
MapReduce.Job.input ->
(MapReduce.Job.key * MapReduce.Job.inter) list Async.Std.Deferred.t
val reduce :
MapReduce.Job.key * MapReduce.Job.inter list ->
MapReduce.Job.output Async.Std.Deferred.t
end
val register_job : (module MapReduce.Job) -> unit
val get_job : MapReduce.id -> (module MapReduce.Job) option
val list_jobs : unit -> MapReduce.id list
module type Controller =
functor (Job : Job) ->
sig
val map_reduce :
MapReduce.Job.input list ->
(MapReduce.Job.key * MapReduce.Job.output) list
Async.Std.Deferred.t
end
module type EntryPoint =
sig val main : string list -> unit Async.Std.Deferred.t end
module type App =
sig
val name : MapReduce.id
module Make : functor (C : Controller) -> EntryPoint
end
val register_app : (module MapReduce.App) -> unit
val get_app : MapReduce.id -> (module MapReduce.App) option
val list_apps : unit -> MapReduce.id list
end