From: <jU...@us...> - 2008-03-10 13:03:22
|
Revision: 353 http://fclient.svn.sourceforge.net/fclient/?rev=353&view=rev Author: jUrner Date: 2008-03-10 06:03:23 -0700 (Mon, 10 Mar 2008) Log Message: ----------- some fixes for mesages ++ getting tired working around the messed up protocol Modified Paths: -------------- trunk/sandbox/fcp2/message.py Modified: trunk/sandbox/fcp2/message.py =================================================================== --- trunk/sandbox/fcp2/message.py 2008-03-09 12:56:43 UTC (rev 352) +++ trunk/sandbox/fcp2/message.py 2008-03-10 13:03:23 UTC (rev 353) @@ -150,7 +150,7 @@ # 2. log errors # # - def setPersistentParams(self, persistentData): + def _setPersistentParams(self, persistentData): params = persistentData.split(PersistentParamsSep) if len(params) > len(self._persistent_params_): raise ValueError('Too many parameters in data') @@ -160,7 +160,7 @@ setter(self, params[n]) - def getPersistentParams(self): + def _getPersistentParams(self): out = [] for n, (getter, setter) in enumerate(self._persistent_params_): #TODO: check if PersistentParamsSep is in data returned @@ -168,6 +168,19 @@ return PersistentParamsSep.join(out) + def _restoreParams(self, params): + for paramName, paramValue in params.items(): + paramType = self._param_types_.get(paramName, None) + if paramType is not None: + paramValue = paramType.fcpToPython(paramValue) + self[paramName] = paramValue + return True + + + def _getDataLength(self): + return 0 + + #*************************************************************************************** # # param types for config message @@ -617,16 +630,17 @@ 'Verbosity': types.FcpTypeInt, } - def restorePersistentParams(self): + def _restoreParams(self, params): + MessageBase._restoreParams(self, params) try: - MessageBase.setPersistentParams(self, self['ClientToken']) + MessageBase._setPersistentParams(self, self['ClientToken']) except Exception, d: #print Exception, d return False return True def updatePersistentParams(self): - self['ClientToken'] = MessageBase.getPersistentParams(self) + self['ClientToken'] = MessageBase._getPersistentParams(self) class ClientHello(MessageBase): @@ -652,13 +666,18 @@ 'Verbosity': types.FcpTypeInt, } - def restorePersistentParams(self): + def _getDataLength(self): + return self['DataLength'] + + def _restoreParams(self, params): + MessageBase._restoreParams(self, params) try: - MessageBase.setPersistentParams(self, self['ClientToken']) + MessageBase._setPersistentParams(self, self['ClientToken']) except Exception, d: + #print Exception, d return False return True - + def updatePersistentParams(self): self['ClientToken'] = MessageBase.getPersistentParams(self) @@ -666,6 +685,29 @@ class ClientPutComplexDir(ClientPut): name = consts.Message.ClientPutComplexDir + + def __init__(self, *args, **kwargs): + ClientPut.__init__(self, *args, **kwargs) + self._dataLength = 0 + + + def _restoreParams(self, params): + result = ClientPut._restoreParams(self, params) + + for paramName, paramValue in self.params.items(): + tmp_paramName = paramName.split('.') + if len(tmp_paramName) == 3: + if tmp_paramName[-1] == 'DataLength': + n = types.FcpTypeInt.fcpToPython(paramValue) + self._dataLength += n + self[paramName] = n + return result + + + def _getDataLength(self): + return self._dataLength + + class ClientPutDiskDir(ClientPut): name = consts.Message.ClientPutDiskDir @@ -1022,26 +1064,64 @@ class PersistentGet(MessageBase): name = consts.Message.PersistentGet _additional_params_ = {} - _param_types_ = { - } + _persistent_params_ = PersistentParamsGet + _param_types_ = ClientGet._param_types_.copy() + _param_types_['Started'] = types.FcpTypeBool + + def _restoreParams(self, params): + MessageBase._restoreParams(self, params) + try: + MessageBase._setPersistentParams(self, self['ClientToken']) + except Exception, d: + #print Exception, d + return False + return True - ####################################### ####################################### class PersistentPut(MessageBase): name = consts.Message.PersistentPut - _additional_params_ = {} - _param_types_ = { - } + _additional_params_ = AdditionalPutParams + _persistent_params_ = PersistentParamsPut + _param_types_ = ClientPut._param_types_.copy() + _param_types_['Started'] = types.FcpTypeBool + def _restoreParams(self, params): + MessageBase._restoreParams(self, params) + try: + MessageBase._setPersistentParams(self, self['ClientToken']) + except Exception, d: + #print Exception, d + return False + return True + class PersistentPutDir(MessageBase): name = consts.Message.PersistentPutDir - _additional_params_ = {} - _param_types_ = { - } + _additional_params_ = AdditionalPutParams + _persistent_params_ = PersistentParamsPut + _param_types_ = ClientPutDiskDir._param_types_.copy() + _param_types_['Started'] = types.FcpTypeBool + + + def _restoreParams(self, params): + MessageBase._restoreParams(self, params) + for paramName, paramValue in self.params.items(): + tmp_paramName = paramName.split('.') + if len(tmp_paramName) == 3: + if tmp_paramName[-1] == 'DataLength': + n = types.FcpTypeInt.fcpToPython(paramValue) + self[paramName] = n + try: + MessageBase._setPersistentParams(self, self['ClientToken']) + except Exception, d: + #print Exception, d + return False + return True + + class PersistentRequestModified(MessageBase): name = consts.Message.PersistentRequestModified _additional_params_ = {} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |