Module onionr.communicator.uploadqueue

Onionr - Private P2P Communication

Class to remember blocks that need to be uploaded and not shared on startup/shutdown

Source code
"""
    Onionr - Private P2P Communication

    Class to remember blocks that need to be uploaded and not shared on startup/shutdown
"""
"""
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
"""

import atexit
import json

import deadsimplekv

import filepaths
from onionrutils import localcommand

UPLOAD_MEMORY_FILE = filepaths.upload_list

def _add_to_hidden_blocks(cache):
    for bl in cache:
        localcommand.local_command('waitforshare/' + bl, post=True)

class UploadQueue:
    """
        Saves and loads block upload info from json file
    """

    def __init__(self, communicator: 'OnionrCommunicatorDaemon'):
        """Start the UploadQueue object, loading left over uploads into queue 
        and registering save shutdown function
        """
        self.communicator = communicator
        cache = deadsimplekv.DeadSimpleKV(UPLOAD_MEMORY_FILE)
        self.store_obj = cache
        cache: list = cache.get('uploads')
        if cache == None:
            cache = []
        
        _add_to_hidden_blocks(cache)
        self.communicator.blocksToUpload.extend(cache)

        atexit.register(self.save)

    def save(self):
        """Saves to disk on shutdown or if called manually"""
        bl: list = self.communicator.blocksToUpload
        self.store_obj.put('uploads', bl)
        self.store_obj.flush()

Classes

class UploadQueue (communicator)

Saves and loads block upload info from json file

Start the UploadQueue object, loading left over uploads into queue and registering save shutdown function

Source code
class UploadQueue:
    """
        Saves and loads block upload info from json file
    """

    def __init__(self, communicator: 'OnionrCommunicatorDaemon'):
        """Start the UploadQueue object, loading left over uploads into queue 
        and registering save shutdown function
        """
        self.communicator = communicator
        cache = deadsimplekv.DeadSimpleKV(UPLOAD_MEMORY_FILE)
        self.store_obj = cache
        cache: list = cache.get('uploads')
        if cache == None:
            cache = []
        
        _add_to_hidden_blocks(cache)
        self.communicator.blocksToUpload.extend(cache)

        atexit.register(self.save)

    def save(self):
        """Saves to disk on shutdown or if called manually"""
        bl: list = self.communicator.blocksToUpload
        self.store_obj.put('uploads', bl)
        self.store_obj.flush()

Methods

def save(self)

Saves to disk on shutdown or if called manually

Source code
def save(self):
    """Saves to disk on shutdown or if called manually"""
    bl: list = self.communicator.blocksToUpload
    self.store_obj.put('uploads', bl)
    self.store_obj.flush()