Small readability improvements
authorAlexey Spiridonov <lesha@fb.com>
Fri, 25 Apr 2014 22:38:38 +0000 (15:38 -0700)
committerDave Watson <davejwatson@fb.com>
Tue, 20 May 2014 19:53:58 +0000 (12:53 -0700)
Summary: I got confused by the error message, and wasn't quite clear on the intent of communicateIOBuf()

Test Plan: waiting for auto-unittests
@override-unit-failures

Reviewed By: tudorb@fb.com

FB internal diff: D1297525

folly/Subprocess.cpp
folly/Subprocess.h

index 10740944e51f7bcbef3ca3a83f37ac7b2a50430d..9c2b32d0e82d597684111bcb46d13a80e99c0414 100644 (file)
@@ -58,8 +58,9 @@ ProcessReturnCode::State ProcessReturnCode::state() const {
 void ProcessReturnCode::enforce(State expected) const {
   State s = state();
   if (s != expected) {
-    throw std::logic_error(to<std::string>("Invalid state ", s,
-                                           " expected ", expected));
+    throw std::logic_error(to<std::string>(
+      "Bad use of ProcessReturnCode; state is ", s, " expected ", expected
+    ));
   }
 }
 
index f189bb49ac44c1bfe32b3459ade79004d935cf80..8af7c639b86960ca26966c77a9d8dde728cfb61e 100644 (file)
@@ -341,12 +341,15 @@ class Subprocess : private boost::noncopyable {
    * If stdout or stderr is not a pipe, an empty IOBuf queue will be returned
    * for the respective buffer.
    *
-   * Note that communicate() returns when all pipes to/from the child are
-   * closed; the child might stay alive after that, so you must still wait().
+   * Note that communicate() and communicateIOBuf() both return when all
+   * pipes to/from the child are closed; the child might stay alive after
+   * that, so you must still wait().
+   *
+   * communicateIOBuf() uses IOBufQueue for buffering (which has the
+   * advantage that it won't try to allocate all data at once), but it does
+   * store the subprocess's entire output in memory before returning.
    *
-   * communicateIOBuf uses IOBufQueue for buffering (which has the advantage
-   * that it won't try to allocate all data at once).  communicate
-   * uses strings for simplicity.
+   * communicate() uses strings for simplicity.
    */
   std::pair<IOBufQueue, IOBufQueue> communicateIOBuf(
       IOBufQueue input = IOBufQueue());