Files
@ 3b755a58a8b5
Branch filter:
Location: Morevna/src/netnode.py - annotation
3b755a58a8b5
1.1 KiB
text/x-python
resettable stats
75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 02ea4fed2520 02ea4fed2520 02ea4fed2520 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 095908159393 095908159393 095908159393 095908159393 9f2b0a4f3538 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 75e070b6b447 | import socket
import logging as log
from networkers import NetworkReader,NetworkWriter
from hashtree import HashTree
class FailedConnection(Exception): pass
class BaseConnection: # abstract
def __init__(self):
self._socket=None
self.incoming=None
self.outcoming=None
def createNetworkers(self):
fr=self._socket.makefile(mode="rb")
fw=self._socket.makefile(mode="wb")
self.incoming=NetworkReader(fr)
self.outcoming=NetworkWriter(fw)
def __enter__(self):
return self.incoming,self.outcoming
def __exit__(self, exc_type, exc_val, exc_tb):
try:
self._socket.shutdown(socket.SHUT_RDWR)
self._socket.close()
except OSError:
log.warning("broken connection")
class NetNode:
def __init__(self,filename,treeFile=""):
self._incoming=None
self._outcoming=None
self._filename=filename
self._treeFile=treeFile
if treeFile:
self._tree=HashTree.load(treeFile)
else:
self._tree=HashTree.fromFile(filename)
self._newLeaves=dict()
def _updateTree(self):
log.info("updating hash tree...")
for (k,v) in self._newLeaves.items():
self._tree.updateLeaf(k, v)
self._tree.save(self._treeFile)
|