Beispiel #1
0
    def recv_into(self, buff, nbytes=0):
        # type: (bytearray, int) -> int
        """
        A version of recv() that stores its data into a buffer rather
        than creating a new string.  Receive up to buffersize bytes from
        the socket.  If buffersize is not specified (or 0), receive up
        to the size available in the given buffer.

        @param buffer: a buffer for the received bytes
        @param nbytes: maximum number of bytes to read
        @return: number of bytes added

        See recv() for documentation about the flags.
        """
        n = len(buff) if nbytes == 0 else nbytes

        if n <= 0:
            raise ValueError('size <= 0')
        buff_bytes = m2.ssl_read(self.ssl, n, self._timeout)
        buff[:] = b''
        buff.extend(buff_bytes)

        return len(buff)
    def recv_into(self, buff, nbytes=0):
        # type: (Union[bytearray, memoryview], int) -> int
        """
        A version of recv() that stores its data into a buffer rather
        than creating a new string.  Receive up to buffersize bytes from
        the socket.  If buffersize is not specified (or 0), receive up
        to the size available in the given buffer.

        If buff is bytearray, it will have after return length of the
        actually returned number of bytes. If buff is memoryview, then
        the size of buff won't change (it cannot), but all bytes after
        the number of returned bytes will be NULL.

        :param buffer: a buffer for the received bytes
        :param nbytes: maximum number of bytes to read
        :return: number of bytes read

        See recv() for documentation about the flags.
        """
        n = len(buff) if nbytes == 0 else nbytes

        if n <= 0:
            raise ValueError('size <= 0')

        # buff_bytes are actual bytes returned
        buff_bytes = m2.ssl_read(self.ssl, n, self._timeout)
        buflen = len(buff_bytes)

        # memoryview type has been added in 2.7
        if py27plus and isinstance(buff, memoryview):
            buff[:buflen] = buff_bytes
            buff[buflen:] = b'\x00' * (len(buff) - buflen)
        else:
            buff[:] = buff_bytes

        return buflen
Beispiel #3
0
 def _read_bio(self, size=1024):
     # type: (int) -> bytes
     if size <= 0:
         raise ValueError('size <= 0')
     return m2.ssl_read(self.ssl, size, self._timeout)
Beispiel #4
0
 def _read_bio(self, size=1024):
     if size <= 0:
         raise ValueError, 'size <= 0'
     return m2.ssl_read(self.ssl, size, self._timeout)
Beispiel #5
0
 def _read_bio(self, size=1024):
     if size <= 0:
         raise ValueError, 'size <= 0'
     return m2.ssl_read(self.ssl, size, self._timeout)
Beispiel #6
0
 def _read_bio(self, size=1024):
     # type: (int) -> bytes
     if size <= 0:
         raise ValueError('size <= 0')
     return m2.ssl_read(self.ssl, size, self._timeout)
Beispiel #7
0
 def _read_bio(self, size=1024):
     if size <= 0:
         raise ValueError('size <= 0')
     return m2.ssl_read(self.ssl, size)