コード例 #1
0
ファイル: message.py プロジェクト: cash2one/Bombolone
    def __init__(self, content=None):
        """
        Create a new SSH2 message.

        :param str content:
            the byte stream to use as the message content (passed in only when
            decomposing a message).
        """
        if content is not None:
            self.packet = BytesIO(content)
        else:
            self.packet = BytesIO()
コード例 #2
0
    def write(self, data):
        """
        Write data to the file.  If write buffering is on (``bufsize`` was
        specified and non-zero), some or all of the data may not actually be
        written yet.  (Use `flush` or `close` to force buffered data to be
        written out.)

        :param data: ``str``/``bytes`` data to write
        """
        if isinstance(data, text_type):
            # Accept text and encode as utf-8 for compatibility only.
            data = data.encode("utf-8")
        if self._closed:
            raise IOError("File is closed")
        if not (self._flags & self.FLAG_WRITE):
            raise IOError("File not open for writing")
        if not (self._flags & self.FLAG_BUFFERED):
            self._write_all(data)
            return
        self._wbuffer.write(data)
        if self._flags & self.FLAG_LINE_BUFFERED:
            # only scan the new data for linefeed, to avoid wasting time.
            last_newline_pos = data.rfind(linefeed_byte)
            if last_newline_pos >= 0:
                wbuf = self._wbuffer.getvalue()
                last_newline_pos += len(wbuf) - len(data)
                self._write_all(wbuf[:last_newline_pos + 1])
                self._wbuffer = BytesIO()
                self._wbuffer.write(wbuf[last_newline_pos + 1:])
            return
        # even if we're line buffering, if the buffer has grown past the
        # buffer size, force a flush.
        if self._wbuffer.tell() >= self._bufsize:
            self.flush()
        return
コード例 #3
0
 def flush(self):
     """
     Write out any data in the write buffer.  This may do nothing if write
     buffering is not turned on.
     """
     self._write_all(self._wbuffer.getvalue())
     self._wbuffer = BytesIO()
     return
コード例 #4
0
 def __init__(self):
     self.newlines = None
     self._flags = 0
     self._bufsize = self._DEFAULT_BUFSIZE
     self._wbuffer = BytesIO()
     self._rbuffer = bytes()
     self._at_trailing_cr = False
     self._closed = False
     # pos - position within the file, according to the user
     # realpos - position according the OS
     # (these may be different because we buffer for line reading)
     self._pos = self._realpos = 0
     # size only matters for seekable files
     self._size = 0
コード例 #5
0
 def __init__(self, mode='r', bufsize=-1):
     BufferedFile.__init__(self)
     self._set_mode(mode, bufsize)
     self.buffer = BytesIO()
     self.offset = 0