include proto
include reference
include key
include trans
include udp
include shard
include seqnum
type id
type data
instance ref : sht_reference(id,key,data)
instance shard : table_shard(key,data)
instance num: sequence_numbers
instance proto(X:id) : sht_protocol(X,ref,trans,id,key,data,shard)
instance trans : sht_transport(udp,proto.req.t,shard.t,num,id)
instance udp : udp_simple(id,trans.net_msg.t)
isolate iso_p = proto with ref,trans,key,shard
isolate iso_dm(me:id) = proto.impl.dm(me) with key
isolate iso_hash(me:id) = proto.impl.hash(me) with key,shard
isolate iso_key = key with impl
isolate iso_key_iter = key.iter with impl
export proto.set
export proto.get
export proto.delegate_
import proto.answer
object impl = {
interpret id -> bv[1]
interpret key.t -> bv[16]
}
object debug = {
action send(src:id,dst:id,m:trans.net_msg.t)
action recv(dst:id,m:trans.net_msg.t)
before udp.send(src:id,dst:id,msg:trans.net_msg.t) {
call send(src,dst,msg)
}
before udp.recv(dst:id,msg:trans.net_msg.t) {
call recv(dst,msg)
}
}
import debug.send
import debug.recv
extract iso_impl(me:id) = key,shard,num,trans.impl(me),proto.impl(me),udp.impl(me),debug(me),impl