[{"id":15916,"web_url":"https://patchwork.libcamera.org/comment/15916/","msgid":"<YF1CK0bpsO1W80e9@pendragon.ideasonboard.com>","date":"2021-03-26T02:08:43","subject":"Re: [libcamera-devel] [PATCH v3 04/11] libcamera: request: Add a\n\ttoString()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nThank you for the patch.\n\n\nOn Thu, Mar 25, 2021 at 01:42:24PM +0000, Kieran Bingham wrote:\n> Provide a toString helper to assist in printing Request state\n> for debug and logging contexts.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n>  include/libcamera/request.h |  3 +++\n>  src/libcamera/request.cpp   | 30 +++++++++++++++++++++++++++---\n>  2 files changed, 30 insertions(+), 3 deletions(-)\n> \n> diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n> index cd5a24741f8a..4cf5ff3f7d3b 100644\n> --- a/include/libcamera/request.h\n> +++ b/include/libcamera/request.h\n> @@ -10,6 +10,7 @@\n>  #include <map>\n>  #include <memory>\n>  #include <stdint.h>\n> +#include <string>\n>  #include <unordered_set>\n>  \n>  #include <libcamera/class.h>\n> @@ -56,6 +57,8 @@ public:\n>  \n>  \tbool hasPendingBuffers() const { return !pending_.empty(); }\n>  \n> +\tstd::string toString() const;\n> +\n>  private:\n>  \tLIBCAMERA_DISABLE_COPY(Request)\n>  \n> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> index fc16b148a599..7b7ef6814686 100644\n> --- a/src/libcamera/request.cpp\n> +++ b/src/libcamera/request.cpp\n> @@ -8,6 +8,7 @@\n>  #include <libcamera/request.h>\n>  \n>  #include <map>\n> +#include <sstream>\n>  \n>  #include <libcamera/buffer.h>\n>  #include <libcamera/camera.h>\n> @@ -261,6 +262,16 @@ FrameBuffer *Request::findBuffer(const Stream *stream) const\n>   * otherwise\n>   */\n>  \n> +/**\n> + * \\fn Request::toString()\n> + * \\brief Generate a string representation of the Request internals\n> + *\n> + * This function facilitates debugging of Request state while it is used\n> + * internally within libcamera.\n> + *\n> + * \\return A string representing the current state of the request\n> + */\n> +\n\nAny reason why this isn't move below, just above the function ?\n\n>  /**\n>   * \\brief Complete a queued request\n>   *\n> @@ -275,9 +286,7 @@ void Request::complete()\n>  \n>  \tstatus_ = cancelled_ ? RequestCancelled : RequestComplete;\n>  \n> -\tLOG(Request, Debug)\n> -\t\t<< \"Request has completed - cookie: \" << cookie_\n> -\t\t<< (cancelled_ ? \" [Cancelled]\" : \"\");\n> +\tLOG(Request, Debug) << toString();\n>  \n>  \tLIBCAMERA_TRACEPOINT(request_complete, this);\n>  }\n> @@ -310,4 +319,19 @@ bool Request::completeBuffer(FrameBuffer *buffer)\n>  \treturn !hasPendingBuffers();\n>  }\n>  \n> +std::string Request::toString() const\n> +{\n> +\tstd::stringstream ss;\n> +\n> +\t/* Pending, Completed, Cancelled(X). */\n> +\tstatic const char *statuses = \"PCX\";\n> +\n> +\t/* Example Output: Request(55:P:1/2:6523524) */\n> +\tss << \"Request (\" << sequence_ << \":\" << statuses[status_] << \":\"\n\ns/Request /Request/\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\t   << pending_.size() << \"/\" << bufferMap_.size() << \":\"\n> +\t   << cookie_ << \")\";\n> +\n> +\treturn ss.str();\n> +}\n> +\n>  } /* namespace libcamera */","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 901F6BDC66\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Mar 2021 02:09:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DD0816084F;\n\tFri, 26 Mar 2021 03:09:28 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8A4EE602E3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Mar 2021 03:09:27 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E6E11B6F;\n\tFri, 26 Mar 2021 03:09:26 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Rfo5f7dE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1616724567;\n\tbh=sHpCEw0Xs4fiubaG3I348m/0+7IQ+o6d3wupsRilarw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Rfo5f7dE4gntn2I78Sxpt60mFDuoH+Tlj8kJeMwh08enX5jxqB46zOqaKsG3KukbN\n\tlbb1z759fuvJQ57kCp6bhGiIEZirDetXobqB94QLS58dShYXtTr09LOZQpaeYGFLTK\n\tKrjePJ0AMQv7B9VPwXZbcbqKPOYz14WAwNhnR9AY=","Date":"Fri, 26 Mar 2021 04:08:43 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<YF1CK0bpsO1W80e9@pendragon.ideasonboard.com>","References":"<20210325134231.1400051-1-kieran.bingham@ideasonboard.com>\n\t<20210325134231.1400051-7-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210325134231.1400051-7-kieran.bingham@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v3 04/11] libcamera: request: Add a\n\ttoString()","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":15948,"web_url":"https://patchwork.libcamera.org/comment/15948/","msgid":"<e5311e36-e3d1-98c1-d8f5-70900f4887b8@ideasonboard.com>","date":"2021-03-26T15:00:14","subject":"Re: [libcamera-devel] [PATCH v3 04/11] libcamera: request: Add a\n\ttoString()","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"On 26/03/2021 02:08, Laurent Pinchart wrote:\n> Hi Kieran,\n> \n> Thank you for the patch.\n> \n> \n> On Thu, Mar 25, 2021 at 01:42:24PM +0000, Kieran Bingham wrote:\n>> Provide a toString helper to assist in printing Request state\n>> for debug and logging contexts.\n>>\n>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>> ---\n>>  include/libcamera/request.h |  3 +++\n>>  src/libcamera/request.cpp   | 30 +++++++++++++++++++++++++++---\n>>  2 files changed, 30 insertions(+), 3 deletions(-)\n>>\n>> diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n>> index cd5a24741f8a..4cf5ff3f7d3b 100644\n>> --- a/include/libcamera/request.h\n>> +++ b/include/libcamera/request.h\n>> @@ -10,6 +10,7 @@\n>>  #include <map>\n>>  #include <memory>\n>>  #include <stdint.h>\n>> +#include <string>\n>>  #include <unordered_set>\n>>  \n>>  #include <libcamera/class.h>\n>> @@ -56,6 +57,8 @@ public:\n>>  \n>>  \tbool hasPendingBuffers() const { return !pending_.empty(); }\n>>  \n>> +\tstd::string toString() const;\n>> +\n>>  private:\n>>  \tLIBCAMERA_DISABLE_COPY(Request)\n>>  \n>> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n>> index fc16b148a599..7b7ef6814686 100644\n>> --- a/src/libcamera/request.cpp\n>> +++ b/src/libcamera/request.cpp\n>> @@ -8,6 +8,7 @@\n>>  #include <libcamera/request.h>\n>>  \n>>  #include <map>\n>> +#include <sstream>\n>>  \n>>  #include <libcamera/buffer.h>\n>>  #include <libcamera/camera.h>\n>> @@ -261,6 +262,16 @@ FrameBuffer *Request::findBuffer(const Stream *stream) const\n>>   * otherwise\n>>   */\n>>  \n>> +/**\n>> + * \\fn Request::toString()\n>> + * \\brief Generate a string representation of the Request internals\n>> + *\n>> + * This function facilitates debugging of Request state while it is used\n>> + * internally within libcamera.\n>> + *\n>> + * \\return A string representing the current state of the request\n>> + */\n>> +\n> \n> Any reason why this isn't move below, just above the function ?\n\nErrmmmm ... this is odd ... I'm not even sure how that happened.\n\nOf course it should be above the function.\n\n> \n>>  /**\n>>   * \\brief Complete a queued request\n>>   *\n>> @@ -275,9 +286,7 @@ void Request::complete()\n>>  \n>>  \tstatus_ = cancelled_ ? RequestCancelled : RequestComplete;\n>>  \n>> -\tLOG(Request, Debug)\n>> -\t\t<< \"Request has completed - cookie: \" << cookie_\n>> -\t\t<< (cancelled_ ? \" [Cancelled]\" : \"\");\n>> +\tLOG(Request, Debug) << toString();\n>>  \n>>  \tLIBCAMERA_TRACEPOINT(request_complete, this);\n>>  }\n>> @@ -310,4 +319,19 @@ bool Request::completeBuffer(FrameBuffer *buffer)\n>>  \treturn !hasPendingBuffers();\n>>  }\n>>  \n>> +std::string Request::toString() const\n>> +{\n>> +\tstd::stringstream ss;\n>> +\n>> +\t/* Pending, Completed, Cancelled(X). */\n>> +\tstatic const char *statuses = \"PCX\";\n>> +\n>> +\t/* Example Output: Request(55:P:1/2:6523524) */\n>> +\tss << \"Request (\" << sequence_ << \":\" << statuses[status_] << \":\"\n> \n> s/Request /Request/\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nFixed up.\n\nThanks.\n\n> \n>> +\t   << pending_.size() << \"/\" << bufferMap_.size() << \":\"\n>> +\t   << cookie_ << \")\";\n>> +\n>> +\treturn ss.str();\n>> +}\n>> +\n>>  } /* namespace libcamera */\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id ADB21C32EA\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Mar 2021 15:00:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 033E768D6A;\n\tFri, 26 Mar 2021 16:00:19 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D5FA0602D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Mar 2021 16:00:17 +0100 (CET)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4BCBC443;\n\tFri, 26 Mar 2021 16:00:17 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"otVIzJBi\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1616770817;\n\tbh=vxCkvA1WGGjLoTs+JitQiMWl7UkgQ9ZKJBhu3dkg3PQ=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=otVIzJBi5c4JjaMKF1yMRm2nb8+rvwKJIazq5pFGMtLyY7Xq1rabHNxe2h4qOupwY\n\t5DVqUp5Uv+Pq8Vw69R+HKC1PbsHXIgs/osivb9LijuK33SlYVio211L14MLI8OkIbB\n\ttGRHd3Ip//coMXfkXJHrbWN4kOnTqc6AfJzlCPMU=","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","References":"<20210325134231.1400051-1-kieran.bingham@ideasonboard.com>\n\t<20210325134231.1400051-7-kieran.bingham@ideasonboard.com>\n\t<YF1CK0bpsO1W80e9@pendragon.ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<e5311e36-e3d1-98c1-d8f5-70900f4887b8@ideasonboard.com>","Date":"Fri, 26 Mar 2021 15:00:14 +0000","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<YF1CK0bpsO1W80e9@pendragon.ideasonboard.com>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [PATCH v3 04/11] libcamera: request: Add a\n\ttoString()","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Reply-To":"kieran.bingham@ideasonboard.com","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]