+
+ def send_data(self, data=None, response=True, expect=['OK']):
+ """Iterate through requests necessary to send ``data`` to a server.
+
+ http://www.gnupg.org/documentation/manuals/assuan/Client-requests.html
+ """
+ requests = []
+ if data:
+ encoded_data = _common.encode(data)
+ start = 0
+ stop = min(_common.LINE_LENGTH-4, len(encoded_data)) # 'D ', CR, CL
+ self.logger.debug('sending {} bytes of encoded data'.format(
+ len(encoded_data)))
+ while stop > start:
+ d = encoded_data[start:stop]
+ request = _common.Request(
+ command='D', parameters=encoded_data[start:stop],
+ encoded=True)
+ requests.append(request)
+ self.logger.debug('send {} byte chunk'.format(stop-start))
+ self._write_request(request=request)
+ start = stop
+ stop = start + min(_common.LINE_LENGTH-4,
+ len(encoded_data) - start)
+ request = _common.Request('END')
+ requests.append(request)
+ self._write_request(request=request)
+ if response:
+ return self.get_responses(requests=requests, expect=expect)