Skip to content

Custom Collection Rules

This document describes the manual RUM collection capabilities of the C++ SDK.

Action

Usage

/**
 * Start an action
 *
 * @param actionName Action name
 * @param actionType Action type
 */
void startAction(std::string actionName, std::string actionType);

/**
 * End an action
 */
void stopAction();

Code Example

sdk->startAction("just4test", "click");

View

Usage

/**
 * Start a view
 *
 * @param viewName Current view name
 */
void startView(std::string viewName);

/**
 * End a view
 */
void stopView();

Code Example

sdk->startView("TEST_VIEW_ONE");
sdk->stopView();

Resource

Usage

/**
 * Start a resource
 *
 * @param resourceId Resource ID
 */
void startResource(std::string resourceId);

/**
 * Stop a resource
 *
 * @param resourceId Resource ID
 */
void stopResource(std::string resourceId);

/**
 * Set network transmission content
 *
 * @param resourceId    Resource ID
 * @param params        Network transmission parameters
 * @param netStatusBean Network status statistics
 */
void addResource(std::string resourceId, ResourceParams params, NetStatus netStatusBean);
Method Name Meaning Required Description
NetStatus.fetchStartTime Request start time No
NetStatus.tcpTime TCP connection time No
NetStatus.dnsTime DNS resolution time No
NetStatus.responseTime Response content transmission time No
NetStatus.sslTime SSL connection time No
NetStatus.firstByteTime Total time from DNS/SSL to receiving the first packet No
NetStatus.ttfb Request response time, time from sending request to receiving first packet No
NetStatus.tcpStartTime TCP start time No
NetStatus.tcpEndTime TCP end time No
NetStatus.dnsStartTime DNS start time No
NetStatus.dnsEndTime DNS end time No
NetStatus.responseStartTime Response start time No
NetStatus.responseEndTime Response end time No
NetStatus.sslStartTime SSL start time No
NetStatus.sslEndTime SSL end time No
ResourceParams.url URL address Yes
ResourceParams.requestHeader Request header parameters No
ResourceParams.responseHeader Response header parameters No
ResourceParams.responseConnection Response connection No
ResourceParams.responseContentType Response Content-Type No
ResourceParams.responseContentEncoding Response Content-Encoding No
ResourceParams.resourceMethod Request method No GET, POST, etc.
ResourceParams.responseBody Returned body content No

Code Example

RestClient::init();
RestClient::Connection* conn = new RestClient::Connection(url);

RestClient::HeaderFields headers;
headers["Accept"] = "application/json";

RestClient::Response r = conn->get("/get");
RestClient::Connection::Info info = conn->GetInfo();

ResourceParams params;
params.resourceMethod = "GET";
params.requestHeader = convert(headers);
params.responseHeader = convert(r.headers);
params.responseBody = r.body;
params.responseConnection = "Keep-Alive";
params.responseContentEncoding = "UTF-8";
params.responseContentType = r.headers["Content-Type"];
params.url = url;
params.resourceStatus = r.code;

NetStatus status;
status.dnsTime = info.lastRequest.nameLookupTime * ns_factor;
status.tcpTime = (info.lastRequest.connectTime - info.lastRequest.nameLookupTime) * ns_factor;
status.sslTime = (info.lastRequest.appConnectTime - info.lastRequest.connectTime) * ns_factor;
status.ttfb = (info.lastRequest.startTransferTime - info.lastRequest.preTransferTime) * ns_factor;
status.responseTime = (info.lastRequest.totalTime - info.lastRequest.startTransferTime) * ns_factor;
status.firstByteTime = info.lastRequest.startTransferTime * ns_factor;

RestClient::disable();

Error

Usage

/**
 * Add error information
 *
 * @param log       Log
 * @param message   Message
 * @param errorType Error type
 * @param state     Program running state
 */
void addError(std::string log, std::string message, RUMErrorType errorType, AppState state);

Code Example

sdk->addError("test error 1", "first error", RUMErrorType::native_crash, AppState::UNKNOWN);
sdk->addError("test error 2", "second error", RUMErrorType::network_error, AppState::UNKNOWN);

LongTask

Usage

/**
 * Add a long-running task
 *
 * @param log      Log
 * @param duration Duration (ns)
 */
void addLongTask(std::string log, long duration);

Code Example

sdk->addLongTask("test long task", 100010);