package Bus(mkBus) where import Types import BusTypes import TagEngine import Vector import Util import Arbiter clientRequest :: Arbiter.ArbiterClient_IFC -> Action clientRequest ifc = ifc.request mkBus :: Vector numClients (BusClient inFlightTransactions) -> Vector numServers (BusServer inFlightTransactions numClients) -> Module Empty mkBus clientVec serverVec = do tagEngineByClient :: Vector numClients (TagEngine inFlightTransactions) tagEngineByClient <- replicateM mkTagEngine arbiterByServer :: Vector numServers (Arbiter_IFC numClients) arbiterByServer <- replicateM (mkArbiter False) addRules |> rules "placeholder rule": when True ==> do let selectedArbiter = (select arbiterByServer 0) mapM_ clientRequest selectedArbiter.clients return $ interface Empty { }