Add zlib/gzip streaming support
[folly.git] / folly / io / RecordIO.cpp
index d889e80698aac8098a710e0c5eed6f0aeed6d3cf..50c854ec01062bb23b0c0c1b6d216f14393f7724 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +17,6 @@
 #include <folly/io/RecordIO.h>
 
 #include <sys/types.h>
-#include <unistd.h>
 
 #include <folly/Exception.h>
 #include <folly/FileUtil.h>
@@ -25,6 +24,7 @@
 #include <folly/Portability.h>
 #include <folly/ScopeGuard.h>
 #include <folly/String.h>
+#include <folly/portability/Unistd.h>
 
 namespace folly {
 
@@ -54,7 +54,7 @@ void RecordIOWriter::write(std::unique_ptr<IOBuf> buf) {
   DCHECK_EQ(buf->computeChainDataLength(), totalLength);
 
   // We're going to write.  Reserve space for ourselves.
-  off_t pos = filePos_.fetch_add(totalLength);
+  off_t pos = filePos_.fetch_add(off_t(totalLength));
 
 #if FOLLY_HAVE_PWRITEV
   auto iov = buf->getIov();
@@ -66,7 +66,7 @@ void RecordIOWriter::write(std::unique_ptr<IOBuf> buf) {
 #endif
 
   checkUnixError(bytes, "pwrite() failed");
-  DCHECK_EQ(bytes, totalLength);
+  DCHECK_EQ(size_t(bytes), totalLength);
 }
 
 RecordIOReader::RecordIOReader(File file, uint32_t fileId)
@@ -84,7 +84,7 @@ RecordIOReader::Iterator::Iterator(ByteRange range, uint32_t fileId, off_t pos)
     range_.clear();
   } else {
     recordAndPos_.second = pos;
-    range_.advance(pos);
+    range_.advance(size_t(pos));
     advanceToValid();
   }
 }
@@ -95,12 +95,12 @@ void RecordIOReader::Iterator::advanceToValid() {
     recordAndPos_ = std::make_pair(ByteRange(), off_t(-1));
     range_.clear();  // at end
   } else {
-    size_t skipped = record.begin() - range_.begin();
+    size_t skipped = size_t(record.begin() - range_.begin());
     DCHECK_GE(skipped, headerSize());
     skipped -= headerSize();
     range_.advance(skipped);
     recordAndPos_.first = record;
-    recordAndPos_.second += skipped;
+    recordAndPos_.second += off_t(skipped);
   }
 }
 
@@ -165,7 +165,7 @@ size_t prependHeader(std::unique_ptr<IOBuf>& buf, uint32_t fileId) {
   memset(header, 0, sizeof(Header));
   header->magic = detail::Header::kMagic;
   header->fileId = fileId;
-  header->dataLength = lengthAndHash.first;
+  header->dataLength = uint32_t(lengthAndHash.first);
   header->dataHash = lengthAndHash.second;
   header->headerHash = headerHash(*header);