Files
controller-wisetopdataserver/python/biopro/server/__pycache__/cache.cpython-37.opt-2.pyc
T

101 lines
13 KiB
Plaintext
Raw Normal View History

2021-12-20 14:52:55 +08:00
B
2021-12-22 14:29:56 +08:00
ò0Àaj@ã@s\ddlZddlmZddlmZddlmZddlmZmZm Z m
2021-12-20 14:52:55 +08:00
Z
m Z ddl m
Z
ddlmZddlmZmZmZmZmZmZdd lmZdd
2021-12-22 14:29:56 +08:00
lmZdd lmZmZdd lmZm Z dd
2021-12-20 14:52:55 +08:00
l!m"Z"m#Z#ddl$m%Z%ddl&m'Z'm(Z(ddl)m*Z*Gdddej+dZ,Gddde,ej+dZ-Gddde'e-e(e-ƒdZ.GdddeƒZ/Gddde%e-e"ƒZ0dS)éN)Ú defaultdict)ÚPath)Útime)ÚUnionÚListÚAnyÚOptionalÚDict)Ú
ControlAPI)ÚDevice)ÚDataMessageResponseÚ DataMessageÚDataMessageEncoderÚRecordingFileReaderÚTimeRangeDataMessageResponseÚDataMessageHandler)Ú
RecordingData)ÚRecordingMetaFile)Ú hex_tableÚYELLOW)Ú
JsonSerializeÚ JSON_OBJECT)Ú SynchronizedÚ synchronized)Ú
LoggerFlag)Ú SocketClientÚSocketClientMacro)Úprint_exceptionc@s"eZdZejeedœddƒZdS)ÚCacheNotifyHandler)ÚdeviceÚmessagecCsdS))Úselfrr r!r!ú8/home/pi/wisetopdataserver/python/biopro/server/cache.pyÚ notify_dataszCacheNotifyHandler.notify_dataN)Ú__name__Ú
__module__Ú __qualname__ÚabcÚabstractmethodÚintÚstrr$r!r!r!r#rsr)Ú metaclassc@sfeZdZdZejddƒZejeee efdœddƒZ
eje dœdd „ƒZ eje dœd
d ƒZ
d S)
ÚCacheAPIr!cCsdS)Nr!)r"r!r!r#Úclear'szCacheAPI.clear)ÚdatacCsdS)Nr!)r"r/r!r!r#Ú push_data.szCacheAPI.push_data)rcGsdS)Nr!)r"rr!r!r#Ú drop_data6szCacheAPI.drop_datacCsdS)Nr!)r"rr!r!r#Ú stop_data>szCacheAPI.stop_dataN)r%r&r'Ú __slots__r(r)r.rÚbytesrr0r*r1r2r!r!r!r#r-$sr-cs6eZdZdZfddZeeedœfdd ZZS)Ú CacheClientr!cstƒ tj¡dS)N)ÚsuperÚ__init__r
ÚADDR)r")Ú __class__r!r#r7KszCacheClient.__init__)ÚcmdÚargsÚreturnc s8ytƒj|f|ž|ŽSttfk
r2tƒdSXdS)N)r6Ú send_commandÚConnectionRefusedErrorÚOSErrorr)r"r:r;Úoption)r9r!r#r=Ns
zCacheClient.send_command) r%r&r'r3r7r+rr=Ú
__classcell__r!r!)r9r#r5Hs r5c@eZdZdZeedœddZeedœddƒZee dœdd „ƒZ
eedœd
d ƒZ ee dœd d
ƒZ
eedœddƒZeedœddƒZddZedœddZeee fddœddZedœddZdS)Ú
FileHandle)Ú_handleÚ_metaÚ_pathÚ_readerÚ_openÚ_last)ÚhandleÚmetacCs,||_||_|j|_d|_d|_tƒ|_dS)Nr)rCrDÚfilepathrErFrGrrH)r"rIrJr!r!r#r7hs zFileHandle.__init__)r<cCs|jS)N)rC)r"r!r!r#Ú file_handlepszFileHandle.file_handlecCs|jjS)N)rDrK)r"r!r!r#rKtszFileHandle.filepathcCs|jS)N)rD)r"r!r!r#Ú meta_filexszFileHandle.meta_filecCs$tƒ|_|jdkrt|jƒ|_|jS)N)rrHrFrrD)r"r!r!r#Úreader|s
 zFileHandle.readercCs|jS)N)rH)r"r!r!r#Úlast_used_time…szFileHandle.last_used_timecCs|jS)N)rG)r"r!r!r#Ú
used_count‰szFileHandle.used_countcCs|jd7_dS))rG)r"r!r!r#Úinc_usedszFileHandle.inc_usedcCstd|jdƒ|_|jdkS)NrrQ)ÚmaxrG)r"r!r!r#Údec_usedszFileHandle.dec_used)Úpathr<cCst|j|jƒ}||_|S)N)rBrCrDrE)r"rUÚfr!r!r#Ú shadow_path•szFileHandle.shadow_pathcCs,t|jƒ|j|jjj|jjj|jj ¡dœS)N)rUrIÚlibraryÚversionÚ
configuration)r+rErCrDrZrXÚlibrary_versionÚas_json)r"r!r!r#r\ s
zFileHandle.as_jsonN)r%r&r'r3r*rr7ÚpropertyrLrrKrMrrNÚfloatrOrPrRÚboolrTrr+rWrr\r!r!r!r#rBVs$ rBc@s$eZdZdZdZdCeeeeedœddZe eedœd d
ƒZ
e eedœd d ƒZ d
dZ ddZ
eedœddZeedœddZeeefedœddZeeefdœddZeeefeedœddZeeefeedœddZeed œd!d"„Zeeed œd#d$„ƒZeeeefd%œd&d'„ƒZed(d)„ƒZeeefeedœd*d+„Zeeedœd,d-„Z ee!ee!fd.œd/d0„Z"ee#ee#fd.œd1d2„Z$eeefdœd3d4„Z%eeefdœd5d6„Z&eeefe'd7œd8d9„Z(e)e*d:œd;d<„Z+e)ee*d=œd>d?„Z,eeefe)e*d@œdAdB„Z-dS)DÚ CacheManageriX)Ú_handlerÚ _cache_sizeÚ_cache_time_at_leastÚ _cache_timeÚ_device_block_listÚ_bufferÚ_fileÚ_file_handle_counterNé')ÚhandlerÚ
cache_sizeÚ
cache_timecCsPt |dt¡t |¡||_||_||_||_i|_t t
ƒ|_ g|_ d|_
dS)Nr`r)rr7rrrarbrcrdrerÚlistrfrgrh)r"rjrkrlr!r!r#r7¹s

zCacheManager.__init__)r<cCs|jS)N)rb)r"r!r!r#rkÑszCacheManager.cache_sizecCs|jS)N)rd)r"r!r!r#rlÕszCacheManager.cache_timecCs.| d¡|j ¡|j ¡g|_d|_dS)shutdownr)Ú log_verboserfr.rergrh)r"r!r!r#rnÙs



zCacheManager.shutdowncCs"| d¡|j ¡|j ¡dS)Nr.)rorfr.re)r"r!r!r#r.às

zCacheManager.clearcCs| ¡ttdd|jƒƒS)NcSs|jS)N)rL)Úitr!r!r#Ú<lambda>èóz-CacheManager.list_open_file.<locals>.<lambda>)Úfile_close_not_usedrmÚmaprg)r"r!r!r#Úlist_open_fileåszCacheManager.list_open_filecCst|j ¡ƒS)N)rmreÚkeys)r"r!r!r#Úget_disable_cache_device_listêsz*CacheManager.get_disable_cache_device_list)rrJcCst|tƒr|j}||j|<dS)N)Ú
isinstancer Ú device_idre)r"rrJr!r!r#Ú
disable_cacheís
zCacheManager.disable_cache)rcCsTt|tƒr|j}y|j|}|j|=Wntk
r:YnXt|tƒrP| |¡dS)N)rxr ryreÚKeyErrorrBÚ
file_close)r"rrVr!r!r#Ú enable_cacheøs

 
zCacheManager.enable_cache)rIr<cCs0t|tƒr|Sx|jD]}|j|kr|SqWdS)N)rxrBrgrL)r"rIrVr!r!r#Ú_get_file_handle
s 
 
zCacheManager._get_file_handlecCs| |¡}|dk r|jSdS)N)r~rN)r"rIrVr!r!r#Ú _file_readers
zCacheManager._file_reader)rJr<cCs| ¡| |¡jS)N)rsÚ
_file_openrL)r"rJr!r!r#Ú file_openszCacheManager.file_opencCsvxL|jD]}|j|krPqW|j}|jd7_t||ƒ}|j |¡| ¡| ¡| dd|j|j f|j
¡|S)NrQÚopenz[%d*%d]) rgrMrhrBÚappendÚreloadrRrorLrPrK)r"rJrVÚir!r!r#r€ s 

 zCacheManager._file_open)rIcCsf| |¡}|dk rZ| ¡r@y|j |¡Wntk
r>YnX| dd||jf|j¡| ¡dS)closez[%d*%d]) r~rTrgÚremoveÚ
ValueErrorrorPrKrs)r"rIrVr!r!r#r|3s
zCacheManager.file_closec Csptƒ}xdt|jƒD]V}||j|jkry|j |¡Wntk
rJYnX| dd|j|j f|j
¡qWdS)Nz
auto closez[%d*%d]) rrmrgrOÚDEFAULT_FILE_HANDLE_TIMEOUTr‡rˆrorLrPrK)r"ÚtrVr!r!r#rsBsz CacheManager.file_close_not_usedcCs| |¡}|dk r|jSdS)N)r~rM)r"rIrVr!r!r#Ú file_metaNs
zCacheManager.file_metacCs
| |¡S)N)r~)r"rIr!r!r#Ú file_infoVszCacheManager.file_info)r/c Ct|tƒrt|ƒdkrdSg}xZ|D]R}yt |¡}Wn4tk
rj}z| |¡t|ƒWdd}~XYq$X| |¡q$Wt|ƒdkrð|  |¡n^t|ƒdkr¢dSyt |¡}Wn4tk
}z| |¡t|ƒWdd}~XYn X|  |¡dS)Nr)
rxrmÚlenrÚdecodeÚ
BaseExceptionÚlog_warnrÚ
_push_data)r"r/ZcollÚer!r!r#r0Ys*
 

   
zCacheManager.push_datacC|j}d}t|tƒrFxR|D]&}|j|jkr||j |¡|j}qWn"|j|jkrh||j |¡|j}|dkrtdS|jdk r°x0| ¡D]$}t |ƒ|j}|dkrˆ|d|=qˆW|j
dkrô|jdkrôx.| ¡D]"}t |ƒd}|dkrÎ|d|=qÎWdS)Nr) rfrxrmrreÚ
time_stamprbÚvaluesrrd)r"r/Úbufferr”Ú_dataZ data_listr…r!r!r#r{s,

   
 zCacheManager._push_datac GsDx>|D]6}t|tƒr|j}y |j|=Wqtk
r:YqXqWdS)N)rxr ryrfr{)r"rrr!r!r#r1§s

 zCacheManager.drop_datacCs(t|tƒr|j}|j |t |¡¡dS)N)rxr ryrar$r
Ústop)r"rr!r!r#r2±s
zCacheManager.stop_data)rr cCs*t|tƒr|j}|j |t ||¡¡dS)N)rxr ryrar$r
r )r"rr r!r!r#r$·s
zCacheManager.notify_data)rjÚresponsecC|j}|dk r| |||¡nzt|jƒdkr8| d¡n`x^|jD]T}||jkr†|j|}t|tƒrv| |¡}||j|<| |||¡q@|  |||¡q@WdS)Nrzno device listen)
rLÚ_get_data_from_filerÚ
listen_deviceÚon_errorrerxrr€Ú_get_data_in_cache)r"rjr™rLrÚhr!r!r#Úget_data_message½s  




zCacheManager.get_data_message)rjrr™c
Cy|j|}Wn&tk
r4| dt|ƒ¡YnÀX| |¡dkrZ| dt|ƒ¡dSt|ƒdkrjdS| |dj¡}t|j ƒ}|dkr¢| dt|ƒ¡dSt
|j |ƒ|_ |j