/pliant/storage/database/login.pli
 
 1  module "/pliant/language/unsafe.pli" 
 2  module "/pliant/language/schedule/threads_engine.pli" 
 3  module "/pliant/util/encoding/html.pli" 
 4  module "/pliant/util/encoding/date.pli" 
 5   
 6   
 7  (gvar Relation logins) flags := 4 
 8  gvar Sem sem 
 9   
 10   
 11  function data_login user 
 12    arg Str user 
 13    sem request 
 14    logins define addressof:current_thread_header null addressof:(new Str "<plogin timestamp=[dq]"+rfc1123_date:datetime+"[dq] user=[dq]"+html_encode:user+"[dq] />") 
 15    sem release 
 16   
 17   
 18  function data_logout 
 19    sem request 
 20    logins define addressof:current_thread_header null null 
 21    sem release 
 22     
 23   
 24  function data_read_login_tag -> log 
 25    arg Link:Str log 
 26    sem rd_request 
 27    log :> (logins query addressof:current_thread_header null) map Str 
 28    if addressof:log=null 
 29      log :> new Str "<plogin timestamp=[dq]"+rfc1123_date:datetime+"[dq] />" 
 30    sem rd_release 
 31   
 32   
 33  export data_login data_logout data_read_login_tag