o
    [h                     @   s   d dl mZ d dlmZ d dlmZ d dlZd dlmZ d dl	Z	d dl
mZmZ d dlmZmZ d dlZd dlZe	dZe ZG d	d
 d
eZG dd deZdS )    )BaseHTTPMiddleware)
Middleware)SessionMiddlewareN)Request)dbNEW_IDMAP_EACH_REQUEST)_SECRETlockz
otree.perfc                   @      e Zd Zdd ZdS )CommitTransactionMiddlewarec              	      sx   t 4 I d H ( trt  ||I d H }|jdk rt  nt  |W  d   I d H  S 1 I d H s5w   Y  d S )Ni  )lock2r   r   Znew_sessionstatus_codecommitrollback)selfrequest	call_nextresponse r   w/home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/otree/middleware.pydispatch   s   

0z$CommitTransactionMiddleware.dispatchN__name__
__module____qualname__r   r   r   r   r   r          r   c                   @   r
   )PerfMiddlewarec           	         s^   t   }||I d H }|jd}|r-t   | }t|d }d| d| }t| |S )NzX-Request-IDi  z	own_time=zms request_id=)timeheadersgetintloggerinfo)	r   r   r   startr   Z
request_idelapsedZmsecmsgr   r   r   r   '   s   
zPerfMiddleware.dispatchNr   r   r   r   r   r   &   r   r   )Zstarlette.middleware.baser   Zstarlette.middlewarer   Zstarlette.middleware.sessionsr   r   Zstarlette.requestsr   loggingZotree.databaser   r   Zotree.commonr   r	   asyncio	threading	getLoggerr!   Lockr   r   r   r   r   r   r   <module>   s    
