module MakeGiven a model of the types involved in a family of RPCs, this functor provides a single multi-version implementation function(Model:sigval name :stringtypequerytyperesponseend):sig..end
implement_multi in terms of that model and a mechanism for
registering the individual versions that implement_multi knows
about. Registration requires knowing how to get into and out of
the model.
Q1 -->-. ,-->-- R1
\ /
Q2 -->-- Q --> R --->-- R2
/ \
Q3 -->-' `-->-- R3
| Parameters: |
|
module Register(Version_i:sigval version :inttypequeryval bin_size_query :query
Bin_prot.Size.sizerval bin_write_query :query
Bin_prot.Write_ml.writerval bin_write_query_ :query
Bin_prot.Unsafe_write_c.writerval bin_writer_query :query
Bin_prot.Type_class.writerval bin_read_query :query
Bin_prot.Read_ml.readerval bin_read_query_ :query
Bin_prot.Unsafe_read_c.readerval bin_read_query__ :(int -> query)
Bin_prot.Unsafe_read_c.readerval bin_reader_query :query
Bin_prot.Type_class.readerval bin_query :query
Bin_prot.Type_class.ttyperesponseval bin_size_response :response
Bin_prot.Size.sizerval bin_write_response :response
Bin_prot.Write_ml.writerval bin_write_response_ :response
Bin_prot.Unsafe_write_c.writerval bin_writer_response :response
Bin_prot.Type_class.writerval bin_read_response :response
Bin_prot.Read_ml.readerval bin_read_response_ :response
Bin_prot.Unsafe_read_c.readerval bin_read_response__ :(int -> response)
Bin_prot.Unsafe_read_c.readerval bin_reader_response :response
Bin_prot.Type_class.readerval bin_response :response
Bin_prot.Type_class.tval model_of_query :query -> Model.queryval response_of_model :Model.response -> responseend):sig..end
implement_multi.
include Versioned_rpc.Callee_converts.S