Module onionr.communicatorutils.uploadblocks.session

Onionr - Private P2P Communication

Virtual upload "sessions" for blocks

Source code
"""
    Onionr - Private P2P Communication

    Virtual upload "sessions" for blocks
"""
from __future__ import annotations
"""
    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/>.
"""
from typing import Union

from onionrutils import stringvalidators
from onionrutils import bytesconverter
from onionrutils import epoch
from utils import reconstructhash

class UploadSession:
    """Manages statistics for an Onionr block upload session
    
    accepting a block hash (incl. unpadded) as an argument""" 
    def __init__(self, block_hash: Union[str, bytes]):
        block_hash = bytesconverter.bytes_to_str(block_hash)
        block_hash = reconstructhash.reconstruct_hash(block_hash)
        if not stringvalidators.validate_hash(block_hash): raise ValueError

        self.start_time = epoch.get_epoch()
        self.block_hash = reconstructhash.deconstruct_hash(block_hash)
        self.total_fail_count: int = 0
        self.total_success_count: int = 0
        self.peer_fails = {}
        self.peer_exists = {}
    
    def fail_peer(self, peer):
        try:
            self.peer_fails[peer] += 1
        except KeyError:
            self.peer_fails[peer] = 0
    
    def fail(self):
        self.total_fail_count += 1
    
    def success(self):
        self.total_success_count += 1

Classes

class UploadSession (block_hash)

Manages statistics for an Onionr block upload session

accepting a block hash (incl. unpadded) as an argument

Source code
class UploadSession:
    """Manages statistics for an Onionr block upload session
    
    accepting a block hash (incl. unpadded) as an argument""" 
    def __init__(self, block_hash: Union[str, bytes]):
        block_hash = bytesconverter.bytes_to_str(block_hash)
        block_hash = reconstructhash.reconstruct_hash(block_hash)
        if not stringvalidators.validate_hash(block_hash): raise ValueError

        self.start_time = epoch.get_epoch()
        self.block_hash = reconstructhash.deconstruct_hash(block_hash)
        self.total_fail_count: int = 0
        self.total_success_count: int = 0
        self.peer_fails = {}
        self.peer_exists = {}
    
    def fail_peer(self, peer):
        try:
            self.peer_fails[peer] += 1
        except KeyError:
            self.peer_fails[peer] = 0
    
    def fail(self):
        self.total_fail_count += 1
    
    def success(self):
        self.total_success_count += 1

Methods

def fail(self)
Source code
def fail(self):
    self.total_fail_count += 1
def fail_peer(self, peer)
Source code
def fail_peer(self, peer):
    try:
        self.peer_fails[peer] += 1
    except KeyError:
        self.peer_fails[peer] = 0
def success(self)
Source code
def success(self):
    self.total_success_count += 1