def _transmit(self,uri,confirmable,code,options=[],payload=[]): assert code in d.METHOD_ALL if code in [d.METHOD_GET,d.METHOD_DELETE]: assert payload==[] assert type(uri)==str (destIp,destPort,uriOptions) = coapUri.uri2options(uri) with self.transmittersLock: self._cleanupTransmitter() messageId = self._getMessageID(destIp,destPort) token = self._getToken(destIp,destPort) newTransmitter = coapTransmitter.coapTransmitter( sendFunc = self.socketUdp.sendUdp, srcIp = self.ipAddress, srcPort = self.udpPort, destIp = destIp, destPort = destPort, confirmable = confirmable, messageId = messageId, code = code, token = token, options = uriOptions+options, payload = payload, ackTimeout = self.ackTimeout, respTimeout = self.respTimeout, ) key = (destIp,destPort,token,messageId) assert key not in self.transmitters.keys() self.transmitters[key] = newTransmitter return newTransmitter.transmit()
def _transmit(self, uri, confirmable, code, options=[], payload=None): assert code in d.METHOD_ALL if code in [d.METHOD_GET, d.METHOD_DELETE]: assert payload == None assert type(uri) == str (destIp, destPort, uriOptions) = coapUri.uri2options(uri) with self.transmittersLock: self._cleanupTransmitter() messageId = self._getMessageID(destIp, destPort) token = self._getToken(destIp, destPort) newTransmitter = coapTransmitter.coapTransmitter( sendFunc=self.socketUdp.sendUdp, srcIp=self.ipAddress, srcPort=self.udpPort, destIp=destIp, destPort=destPort, confirmable=confirmable, messageId=messageId, code=code, token=token, options=uriOptions + options, payload=payload, respTimeout=self.respTimeout, ) key = (destIp, destPort, token, messageId) assert key not in self.transmitters.keys() self.transmitters[key] = newTransmitter return newTransmitter.transmit()
def _transmit(self, uri, confirmable, code, options=[], payload=[]): assert code in d.METHOD_ALL if code in [d.METHOD_GET, d.METHOD_DELETE]: assert payload == [] assert type(uri) == str (host, destPort, uriOptions) = coapUri.uri2options(uri) destIp = socket.getaddrinfo(host, destPort)[0][4][0] (securityContext, sequenceNumber) = oscoap.getRequestSecurityParams( oscoap.objectSecurityOptionLookUp(options)) with self.transmittersLock: self._cleanupTransmitter() messageId = self._getMessageID(destIp, destPort) token = self._getToken(destIp, destPort) newTransmitter = coapTransmitter.coapTransmitter( sendFunc=self.socketUdp.sendUdp, srcIp=self.ipAddress, srcPort=self.udpPort, destIp=destIp, destPort=destPort, confirmable=confirmable, messageId=messageId, code=code, token=token, options=uriOptions + options, payload=payload, securityContext=securityContext, requestSeq=sequenceNumber, ackTimeout=self.ackTimeout, respTimeout=self.respTimeout, maxRetransmit=self.maxRetransmit) key = (destIp, destPort, token, messageId) assert key not in self.transmitters.keys() self.transmitters[key] = newTransmitter response = newTransmitter.transmit() if securityContext: try: (innerOptions, plaintext) = oscoap.unprotectMessage( securityContext, version=response['version'], code=response['code'], options=response['options'], ciphertext=response['ciphertext'], partialIV=sequenceNumber, ) response['options'] = response['options'] + innerOptions response['payload'] = plaintext except e.oscoapError: raise return response