src/common/data-writer.cc
changeset 122 6b8f1eda5c57
parent 110 9ac6d63bfe33
child 131 f4fb87e77034
equal deleted inserted replaced
121:f8bc1a370b82 122:6b8f1eda5c57
    60 DataWriterPrivate::DataWriterPrivate ()
    60 DataWriterPrivate::DataWriterPrivate ()
    61     : m_current (0)
    61     : m_current (0)
    62 {}
    62 {}
    63 DataWriterPrivate::~DataWriterPrivate ()
    63 DataWriterPrivate::~DataWriterPrivate ()
    64 {
    64 {
    65     ::write (m_fd, m_data, m_current);
    65     ::Write (m_fd, m_data, m_current);
    66     ::close (m_fd);
    66     ::Close (m_fd);
    67 }
    67 }
    68 
    68 
    69 
    69 
    70 void
    70 void
    71 DataWriterPrivate::open (char const *filename)
    71 DataWriterPrivate::Open (char const *filename)
    72 {
    72 {
    73     m_fd = ::open (filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
    73     m_fd = ::Open (filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
    74     assert (m_fd != -1);
    74     assert (m_fd != -1);
    75 }
    75 }
    76 
    76 
    77 #ifndef min
    77 #ifndef min
    78 #define min(a,b) ((a)<(b)?(a):(b))
    78 #define min(a,b) ((a)<(b)?(a):(b))
    79 #endif /* min */
    79 #endif /* min */
    80 
    80 
    81 void
    81 void
    82 DataWriterPrivate::write (uint8_t *buffer, uint32_t size)
    82 DataWriterPrivate::Write (uint8_t *buffer, uint32_t size)
    83 {
    83 {
    84     while (size > 0) {
    84     while (size > 0) {
    85         uint32_t toCopy = min (BUFFER_SIZE - m_current, size);
    85         uint32_t toCopy = min (BUFFER_SIZE - m_current, size);
    86         memcpy (m_data + m_current, buffer, toCopy);
    86         memcpy (m_data + m_current, buffer, toCopy);
    87         size -= toCopy;
    87         size -= toCopy;
    88         m_current += toCopy;
    88         m_current += toCopy;
    89         buffer += toCopy;
    89         buffer += toCopy;
    90         if (m_current == BUFFER_SIZE) {
    90         if (m_current == BUFFER_SIZE) {
    91             ssize_t written = 0;
    91             ssize_t written = 0;
    92             written = ::write (m_fd, m_data, BUFFER_SIZE);
    92             written = ::Write (m_fd, m_data, BUFFER_SIZE);
    93             assert (written == BUFFER_SIZE);
    93             assert (written == BUFFER_SIZE);
    94             m_current = 0;
    94             m_current = 0;
    95         }
    95         }
    96     }
    96     }
    97 }
    97 }
   104     delete m_priv;
   104     delete m_priv;
   105     m_priv = 0;
   105     m_priv = 0;
   106 }
   106 }
   107 
   107 
   108 void 
   108 void 
   109 DataWriter::open (char const *filename)
   109 DataWriter::Open (char const *filename)
   110 {
   110 {
   111     m_priv->open (filename);
   111     m_priv->Open (filename);
   112 }
   112 }
   113 void 
   113 void 
   114 DataWriter::write (uint8_t *buffer, uint32_t size)
   114 DataWriter::Write (uint8_t *buffer, uint32_t size)
   115 {
   115 {
   116     m_priv->write (buffer, size);
   116     m_priv->Write (buffer, size);
   117 }
   117 }
   118 
   118 
   119 }; // namespace
   119 }; // namespace