From cd3d728083b1a9231375507124d6a88d896431d9 Mon Sep 17 00:00:00 2001 From: Yehowshua Immanuel Date: Mon, 14 Apr 2025 14:33:13 -0400 Subject: [PATCH] some prep work to towards having a server accept a request --- bs/Bus.bs | 14 +++++++++++--- bs/BusTypes.bs | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/bs/Bus.bs b/bs/Bus.bs index 4a516f4..5e6ddfe 100644 --- a/bs/Bus.bs +++ b/bs/Bus.bs @@ -72,6 +72,14 @@ mkBus serverMap = do clientResponseQueues :: Vector numClients (FIFOF (TaggedBusResponse inFlightTransactions)) clientResponseQueues <- replicateM (mkSizedBypassFIFOF (valueOf inFlightTransactions)) + -- The following two vectors of FIFOs make it easier to push/pull data to/from internal + -- server methods: + consumeRequestQueues :: Vector numServers (FIFOF (TaggedBusResponse inFlightTransactions)) + consumeRequestQueues <- replicateM mkBypassFIFOF + + submitResponseQueues :: Vector numServers (FIFOF (TaggedBusResponse inFlightTransactions)) + submitResponseQueues <- replicateM mkBypassFIFOF + let clientRules :: Vector numClients (Rules) clientRules = genWith $ \clientIdx -> let @@ -82,7 +90,7 @@ mkBus serverMap = do "rule" : when True ==> do $display "Bus.bs:71" - (sprintf "request server from client %d" clientIdx): when True ==> do + (sprintf "dispatch client request %d" clientIdx): when True ==> do let clientRequest :: TaggedBusRequest inFlightTransactions clientRequest = selectedClientRequestQueue.first @@ -162,11 +170,11 @@ mkBus serverMap = do let servers :: Vector numServers (BusServer inFlightTransactions numClients) servers = genWith $ \serverIdx -> interface BusServer - consumeRequest :: ActionValue (MkTagType inFlightTransactions, BusRequest) + consumeRequest :: ActionValue (TaggedBusRequest inFlightTransactions) consumeRequest = do dummyVar := (not dummyVar) let dummyBusRequest = BusReadRequest (ReadRequest 0 SizeByte) - return (0, dummyBusRequest) + return (TaggedBusRequest {tag = 0; busRequest = dummyBusRequest}) submitResponse :: ( MkClientTagType numClients, TaggedBusResponse inFlightTransactions diff --git a/bs/BusTypes.bs b/bs/BusTypes.bs index 7746669..ed8838e 100644 --- a/bs/BusTypes.bs +++ b/bs/BusTypes.bs @@ -102,7 +102,7 @@ interface (BusClient :: # -> *) inFlightTransactions = -- received from `consumeRequest`, ensuring the response is correctly -- associated with the original request. interface (BusServer :: # -> # -> *) inFlightTransactions numClients = - consumeRequest :: ActionValue (MkTagType inFlightTransactions, BusRequest) + consumeRequest :: ActionValue (TaggedBusRequest inFlightTransactions) submitResponse :: ( MkClientTagType numClients, TaggedBusResponse inFlightTransactions ) -> Action