Files
@ 02ea4fed2520
Branch filter:
Location: Morevna/src/netnode.py - annotation
02ea4fed2520
1.1 KiB
text/x-python
fixes, error handling
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)
|