>{Se H d dl Z d dlZd dlmZ d dlmZ G d d ZdS ) N)db) MessageToSendc e Zd ZdZddZddZdefdZdefd Z de fd Zede fd Z ede fd Zdd efdZdeeeef ddfdZdefdZdS )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 Nc L || _ || _ g | _ |pt | _ d S N) _buffer_limit_storage_limit_bufferr _model)selfbuffer_limit storage_limitmodels a/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/internals/persistent_message.py__init__z PersistentMessagesQueue.__init__ s) )+,} returnc | j rt j 5 | j | j | j | j z }|dk r| j | g | _ d d d d S # 1 swxY w Y d S d S Nr )r r atomicr insert_manystorage_sizer delete_old)r need_to_removes r push_buffer_to_storagez.PersistentMessagesQueue.push_buffer_to_storage s <