wo4h HddlZddlZddlmZddlmZGddZdS)N)db) MessageToSendceZdZdZddZddZdefdZdefd Z de fd Z e de fd Z e de fd Zdd efdZdeeeefddfdZdefdZdS)PersistentMessagesQueuea The queue to store messages sent to the server if it is unavailable. - stores more recent data; if a limit is exceeded, older messages are deleted. - no duplicate messages are sent NOTE: it is worth remembering that when writing a large number of messages, the amount of memory used may increase by the size of the sqlite cache (this may not be immediately obvious). https://www.sqlite.org/pragma.html#pragma_cache_size NcL||_||_g|_|pt|_dSN) _buffer_limit_storage_limit_bufferr_model)self buffer_limit storage_limitmodels a/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/internals/persistent_message.py__init__z PersistentMessagesQueue.__init__s))+ ,} returnc|jrtj5|j|j|j|jz }|dkr|j|g|_ddddS#1swxYwYdSdSNr)r ratomicr insert_many storage_sizer delete_old)rneed_to_removes rpush_buffer_to_storagez.PersistentMessagesQueue.push_buffer_to_storages < " " " '' 555!%!2T5H!H!A%%K**>:::!  " " " " " " " " " " " " " " " " " " " "sAA>>BBcg}tj5|t|j|jj|jjz }|j dddn #1swxYwY||j z }g|_ t|Sr ) rrlistrselect timestampmessagetuplesdeleteexecuter sorted)ritemss rpop_allzPersistentMessagesQueue.pop_all's Y[[ + + T ""K)4;+>&(( E K   ( ( * * *  + + + + + + + + + + + + + + +  e}}sA=BB#&B#c2|dkSr)qsizers remptyzPersistentMessagesQueue.empty4szz||q  rc:|jt|jzSr )rlenr r,s rr+zPersistentMessagesQueue.qsize7s 3t|#4#444rc*t|jSr )r/r r,s r buffer_sizez#PersistentMessagesQueue.buffer_size:s4<   rcX|jSr )rr!countr,s rrz$PersistentMessagesQueue.storage_size>s"{!!##))+++rr#c|tj}|j||f|j|jkr|dSdSr )timer appendr1r r)rr#r"s rputzPersistentMessagesQueue.putBs_   I Y0111  t1 1 1  ' ' ) ) ) ) ) 2 1rmessagesc|j||j|jkr|dSdSr )r extendr1r r)rr8s rput_manyz PersistentMessagesQueue.put_manyIsI H%%%  t1 1 1  ' ' ) ) ) ) ) 2 1rcd|jsq|jdkrf|j|j}|xjd|Dz c_|j||jr|jd\}}|Stj )Nr)limitc"g|] }|dd S)N).0items r z/PersistentMessagesQueue.get..Ss AAA$T!""XAAAr) r rr get_oldestr r$ delete_inpopqueueEmpty)rr(_r#s rgetzPersistentMessagesQueue.getNs| ) 1Q 6 6K**1C*DDE LLAA%,,..AAA ALL K ! !% ( ( ( < ))!,,JAwNkmmr)rrN)rNr )__name__ __module__ __qualname____doc__rrr r)boolr-intr+propertyr1rbytesr7tuplefloatr;rJr@rrrrsP  ---- " " " "     !t!!!!5s5555!S!!!X!,c,,,X,**5*****eE5L&9!:*t**** U      rr)rGr5defence360agent.model.instancer&defence360agent.model.messages_to_sendrrr@rrrWsw ------@@@@@@QQQQQQQQQQr