sig
type ('a, 'b) worker_task
val make_worker_task :
?read_input:(string -> 'a) ->
?write_output:('b -> string) ->
?write_exception:(exn -> string) ->
string -> ('a -> 'b) -> ('a, 'b) Procord_task.worker_task
val read_input : ('a, 'b) Procord_task.worker_task -> string -> 'a
val write_output : ('a, 'b) Procord_task.worker_task -> 'b -> string
val write_exception : ('a, 'b) Procord_task.worker_task -> exn -> string
val run : ('a, 'b) Procord_task.worker_task -> 'a -> 'b
val worker_task_name : ('a, 'b) Procord_task.worker_task -> string
type ('a, 'b) delegated_task
val make_delegated_task :
?write_input:('a -> string) ->
?read_output:(string -> 'b) ->
?read_exception:(string -> exn) ->
string -> ('a, 'b) Procord_task.delegated_task
val write_input : ('a, 'b) Procord_task.delegated_task -> 'a -> string
val read_output : ('a, 'b) Procord_task.delegated_task -> string -> 'b
val read_exception :
('a, 'b) Procord_task.delegated_task -> (string -> exn) option
val delegated_task_name : ('a, 'b) Procord_task.delegated_task -> string
val make :
?read_input:(string -> 'a) ->
?write_input:('a -> string) ->
?read_output:(string -> 'b) ->
?write_output:('b -> string) ->
?read_exception:(string -> exn) ->
?write_exception:(exn -> string) ->
string ->
('a -> 'b) ->
('a, 'b) Procord_task.worker_task * ('a, 'b) Procord_task.delegated_task
end