File: //lib/python2.7/site-packages/pymemcache-3.4.0-py2.7.egg/pymemcache/pool.pyc
�
�3`c @ sV d d l Z d d l Z d d l Z d d l Z d d l Z d e f d � � YZ d S( i����Nt
ObjectPoolc B s} e Z d Z d d d d � Z e d � � Z e d � � Z e j e
d � � Z d � Z e
d � Z e
d � Z d � Z RS(
s: A pool of objects that release/creates/destroys as needed.c C s� t j � | _ t j � | _ | | _ | d k rE t j � | _ n | � | _ | | _ | pc d } t
| t j � s� | d k r� t
d � � n | | _ d S( Ni i i s% "max_size" must be a positive integerI � ( t collectionst dequet
_used_objst
_free_objst _obj_creatort Nonet threadingt Lockt _lockt
_after_removet
isinstancet sixt
integer_typest
ValueErrort max_size( t selft obj_creatort after_removeR t lock_generator( ( sN /usr/lib/python2.7/site-packages/pymemcache-3.4.0-py2.7.egg/pymemcache/pool.pyt __init__ s c C s
t | j � S( N( t tupleR ( R ( ( sN /usr/lib/python2.7/site-packages/pymemcache-3.4.0-py2.7.egg/pymemcache/pool.pyt used* s c C s
t | j � S( N( R R ( R ( ( sN /usr/lib/python2.7/site-packages/pymemcache-3.4.0-py2.7.egg/pymemcache/pool.pyt free. s c c s� | j � } y | VWn_ t k
rv t j � } | sG | j | � n
| j | � t j | d | d | d � n X| j | � d S( Ni i i ( t gett Exceptiont syst exc_infot releaset destroyR t reraise( R t destroy_on_failt objR ( ( sN /usr/lib/python2.7/site-packages/pymemcache-3.4.0-py2.7.egg/pymemcache/pool.pyt get_and_release2 s
#c C s� | j �� | j sm t | j � } | | j k rM t d | | j f � � n | j � } | j j | � | S| j j � } | j j | � | SWd QXd S( Ns Too many objects, %s >= %s( R R t lenR R t RuntimeErrorR t appendt pop( R t
curr_countR ( ( sN /usr/lib/python2.7/site-packages/pymemcache-3.4.0-py2.7.egg/pymemcache/pool.pyR @ s
c C sy t } | j �? y | j j | � t } Wn t k
rI | sJ � qJ n XWd QX| ru | j d k ru | j | � n d S( N( t FalseR R t removet TrueR R
R ( R R t silentt was_dropped( ( sN /usr/lib/python2.7/site-packages/pymemcache-3.4.0-py2.7.egg/pymemcache/pool.pyR P s
c C sX | j �I y$ | j j | � | j j | � Wn t k
rM | sN � qN n XWd QXd S( N( R R R( R R$ R ( R R R* ( ( sN /usr/lib/python2.7/site-packages/pymemcache-3.4.0-py2.7.egg/pymemcache/pool.pyR \ s
c C s� | j d k r� g } | j �? | j | j � | j | j � | j j � | j j � Wd QXxH | D] } | j | � qf Wn* | j � | j j � | j j � Wd QXd S( N( R
R R t extendR R t clear( R t
needs_destroyR ( ( sN /usr/lib/python2.7/site-packages/pymemcache-3.4.0-py2.7.egg/pymemcache/pool.pyR- e s
N( t __name__t
__module__t __doc__R R t propertyR R t
contextlibt contextmanagerR'