You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CoAP/coapthon/transaction.py

157 lines
3.5 KiB
Python

import threading
__author__ = 'Giacomo Tanganelli'
class Transaction(object):
"""
Transaction object to bind together a request, a response and a resource.
"""
def __init__(self, request=None, response=None, resource=None, timestamp=None):
"""
Initialize a Transaction object.
:param request: the request
:param response: the response
:param resource: the resource interested by the transaction
:param timestamp: the timestamp of the transaction
"""
self._response = response
self._request = request
self._resource = resource
self._timestamp = timestamp
self._completed = False
self._block_transfer = False
self.notification = False
self.separate_timer = None
self.retransmit_thread = None
self.retransmit_stop = None
self._lock = threading.RLock()
self.cacheHit = False
self.cached_element = None
def __enter__(self):
self._lock.acquire()
def __exit__(self, exc_type, exc_val, exc_tb):
self._lock.release()
@property
def response(self):
"""
Return the response.
:return: the response
:rtype: Response
"""
return self._response
@response.setter
def response(self, value):
"""
Set the response.
:type value: Response
:param value: the response to be set in the transaction
"""
self._response = value
@property
def request(self):
"""
Return the request.
:return: the request
:rtype: Request
"""
return self._request
@request.setter
def request(self, value):
"""
Set the request.
:type value: Request
:param value: the request to be set in the transaction
"""
self._request = value
@property
def resource(self):
"""
Return the resource.
:return: the resource
:rtype: Resource
"""
return self._resource
@resource.setter
def resource(self, value):
"""
Set the resource.
:type value: Resource
:param value: the resource to be set in the transaction
"""
self._resource = value
@property
def timestamp(self):
"""
Return the timestamp.
:return: the timestamp
"""
return self._timestamp
@timestamp.setter
def timestamp(self, t):
"""
Set the timestamp.
:param t: the timestamp of the transaction
"""
self._timestamp = t
@property
def completed(self):
"""
Return the completed attribute.
:return: True, if transaction is completed
"""
return self._completed
@completed.setter
def completed(self, b):
"""
Set the completed attribute.
:param b: the completed value
:type b: bool
"""
assert isinstance(b, bool)
self._completed = b
@property
def block_transfer(self):
"""
Return the block_transfer attribute.
:return: True, if transaction is blockwise
"""
return self._block_transfer
@block_transfer.setter
def block_transfer(self, b):
"""
Set the block_transfer attribute.
:param b: the block_transfer value
:type b: bool
"""
assert isinstance(b, bool)
self._block_transfer = b