{- A simple agent that answers fixed queries, used for testing. -} module QuicQuid.Agent.DBAgent (dbAgent) where import qualified Data.Map as M import Data.Maybe import Control.Monad(forever) import QuicQuid.Log import QuicQuid.Term import QuicQuid.Logic import QuicQuid.Router import QuicQuid.Broker import QuicQuid.Agent.Util dbAgent agentName termsDB = answerAgent agentName "?q" process where process qch = do (bindings,replyCh) <- readAskChan qch debugM "QuicQuid.Agent.DBAgent" $ "ASK:" ++ show (bindings,replyCh) let (Just query) = M.lookup "q" bindings mapM_ (chk replyCh query) termsDB chk replyCh query entry = do let u = unify1 query entry if isJust u then writeQueryChan replyCh (fromJust u) else return ()