DB connection pooling in HTTPd

db4
Slava Pestov 2008-05-01 21:49:15 -05:00
parent c6e91eb009
commit df9277c4ca
2 changed files with 14 additions and 9 deletions

View File

@ -0,0 +1,4 @@
IN: http.server.db.tests
USING: tools.test http.server.db ;
\ <db-persistence> must-infer

View File

@ -1,16 +1,17 @@
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: db http.server http.server.sessions kernel accessors
continuations namespaces destructors ;
USING: db db.pooling http.server http.server.sessions kernel
accessors continuations namespaces destructors ;
IN: http.server.db
TUPLE: db-persistence < filter-responder db params ;
TUPLE: db-persistence < filter-responder pool ;
C: <db-persistence> db-persistence
: connect-db ( db-persistence -- )
[ db>> ] [ params>> ] bi make-db db-open
[ db set ] [ add-always-destructor ] bi ;
: <db-persistence> ( responder db params -- responder' )
<pool> db-persistence boa ;
M: db-persistence call-responder*
[ connect-db ] [ call-next-method ] bi ;
[
pool>> [ acquire-connection ] keep
[ return-connection-later ] [ drop db set ] 2bi
]
[ call-next-method ] bi ;