SiddiqSoft.TimeThis 1.1.5

Install-Package SiddiqSoft.TimeThis -Version 1.1.5
dotnet add package SiddiqSoft.TimeThis --version 1.1.5
<PackageReference Include="SiddiqSoft.TimeThis" Version="1.1.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SiddiqSoft.TimeThis --version 1.1.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SiddiqSoft.TimeThis, 1.1.5"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install SiddiqSoft.TimeThis as a Cake Addin
#addin nuget:?package=SiddiqSoft.TimeThis&version=1.1.5

// Install SiddiqSoft.TimeThis as a Cake Tool
#tool nuget:?package=SiddiqSoft.TimeThis&version=1.1.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

TimeThis : Simple stopwatch for scope

CodeQL Build Status

Objective

Provide for a simple utility class where we can time the operation of a code block and allow the time to be updated in an optional lambda.

auto handleHTTPMessage(auto req)
{
    if( req == HTTP_GET )
    {
        if( req == "/v1/something" )
        {
            // Consider the scenario where we would like to inform
            // the client time taken.
            auto     resp= createResponse();
            // Declaration of the lambda takes the resp object
            // and sets the header and logs to our global logger
            TimeThis tt{ [&g_logger,&resp](const auto& delta) {
                            auto ttx= std::chrono::duration_cast<milliseconds>(tt.elapsed());
                            // Set the diagnostic header
                            resp->addHeader("X-Diagnostic-Time", std::to_string(ttx.count()) );
                            // Log this response
                            g_logger->debug("Processing /v1/something took {}ms", ttx );
                        }
                     }; // notes the call function and starts the stopwatch
            // Some other work..Perhaps lookup db, etc.
            ..
            ..
            resp= ...; // set the body
            return resp;
        }
    }
}
  • Support formatter for std::format when available
  • Support use of std::source_location when available
  • Simple "api" where all of your work is in your lambda

Usage

#include "gtest/gtest.h"
#include "siddiqsoft/TimeThis.hpp"


TEST(examples, Example1)
{
    bool passTest {false};

    try
    {
        // Use initializer list-style instantiation; we do not allow move/assignment construction.
        // Note that the `()` is not required when the lambda/function takes no argument.
        siddiqsoft::TimeThis tt {[&passTest] {
            // Runs when this scope ends
            passTest = true;
        }};

        auto timeTaken= tt.elapsed();
    }
    catch (...) {
        EXPECT_TRUE(false); // if we throw then the test fails.
    }

    // Iff the lambda runs, it should be true
    EXPECT_TRUE(passTest);
}

<small align="right">

© 2021 Siddiq Software LLC. All rights reserved.

</small>

This package has no dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on SiddiqSoft.TimeThis:

Package Downloads
SiddiqSoft.CosmosClient

Azure Cosmos REST-API Client for Modern C++

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.5 372 11/20/2021
1.1.4 130 7/30/2021
1.1.3 100 7/28/2021
1.1.2 103 7/28/2021
1.1.1 110 7/28/2021
1.1.0 338 7/28/2021
1.0.1 383 7/28/2021