Edouard@2463: #!/usr/bin/env python Edouard@2463: # -*- coding: utf-8 -*- Edouard@2463: Edouard@2463: # See COPYING file for copyrights details. Edouard@2463: kinsamanka@3750: andrej@2540: import hashlib Edouard@3861: from runtime import PlcStatus Edouard@2463: edouard@2492: Edouard@2463: class ConnectorBase(object): Edouard@2463: edouard@3884: chuncksize = 0xfff # 4KB edouard@2492: Edouard@3861: PLCObjDefaults = { Edouard@3861: "StartPLC": False, Edouard@3861: "GetTraceVariables": (PlcStatus.Broken, None), Edouard@3861: "GetPLCstatus": (PlcStatus.Broken, None), Edouard@3861: "RemoteExec": (-1, "RemoteExec script failed!"), Edouard@3861: "GetVersions": "*** Unknown ***" Edouard@3861: } Edouard@3861: Edouard@2487: def BlobFromFile(self, filepath, seed): andrej@2540: s = hashlib.new('md5') kinsamanka@3772: s.update(seed.encode()) edouard@3808: blobID = self.SeedBlob(seed.encode()) Edouard@2463: with open(filepath, "rb") as f: Edouard@2487: while blobID == s.digest(): edouard@2492: chunk = f.read(self.chuncksize) edouard@2492: if len(chunk) == 0: edouard@2492: return blobID Edouard@2463: blobID = self.AppendChunkToBlob(chunk, blobID) Edouard@2463: s.update(chunk) Edouard@2621: raise IOError("Data corrupted during transfer or connection lost")