ó
ŰłY]c           @` s}   d  Z  d d l m Z m Z m Z d d l Z d e f d     YZ d e f d     YZ d   Z	 e
 d	 k ry e	   n  d S(
   sj   
Implement background services for the application.
This is implemented as a cooperative concurrent task.
i    (   t   absolute_importt   print_functiont   divisionNt   Servicec           B` sD   e  Z d  d d  Z d   Z d   Z d   Z d   Z d   Z RS(   t   unnamedc         C` sA   | |  _  t |  _ | |  _ |  j |  j  |  _ t |  j  d  S(   N(   t   namet   Truet   enabledt   argt   processt   _taskt   next(   t   selfR   R   (    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyt   __init__   s
    			c         C` s@   |  j  r< |  j  } z t |  _  t |  j  Wd | |  _  Xn  d S(   sÚ   
        Request for the service task.
        Servicing is disabled if it is disabled thourght the "enabled"
        attribute.  When the task is executing, the service is disabled to
        avoid recursion.
        N(   R   t   FalseR   R
   (   R   t   enable(    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyt   service   s    			c         C` s
   t   d S(   s   
        Overrided to implement the service task.
        This must be a generator.
        Use `yield` to return control.
        N(   t   NotImplementedError(   R   R   (    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyR	   "   s    c         C` s   |  S(   N(    (   R   (    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyt	   __enter__*   s    c         C` s   |  j    d  S(   N(   R   (   R   t   exc_typet   exc_valt   exc_tb(    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyt   __exit__-   s    c         ` s%   t  j       f d    } | S(   sM   
        A decorator for a function. Service is triggered on return.
        c          ` s       |  |   SWd  QXd  S(   N(    (   t   argst   kws(   t   fnR   (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyt   wrap4   s    (   t	   functoolst   wraps(   R   R   R   (    (   R   R   s7   lib/python2.7/site-packages/numba/servicelib/service.pyt   after0   s    !N(	   t   __name__t
   __module__t   NoneR   R   R	   R   R   R   (    (    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyR   
   s   				t   HelloServicec           B` s   e  Z d    Z RS(   c         c` s8   d } d  Vx& t  r3 t d |  | d 7} d  Vq Wd  S(   Ni    t   Helloi   (   R   t   print(   R   R   t   count(    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyR	   ?   s    	
(   R   R   R	   (    (    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyR!   >   s   c          C` sh   t  d  }  t d  |  j   t d  |  j   |   t d  Wd  QX|  j d    } |   d  S(   Ns   my.hellot   1t   2t   3c           S` s   t  d  d  S(   Nt   4(   R#   (    (    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyt   nestedQ   s    (   R!   R#   R   R   (   t   servR)   (    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyt   testG   s    



t   __main__(   t   __doc__t
   __future__R    R   R   R   t   objectR   R!   R+   R   (    (    (    s7   lib/python2.7/site-packages/numba/servicelib/service.pyt   <module>   s   4		