#pragma once #include #include #include #include #include #include "KinesisVideoProducer.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace std::chrono; using namespace com::amazonaws::kinesis::video; using namespace log4cplus; class CanaryLogs { public: class CloudwatchLogsObject { public: Aws::CloudWatchLogs::CloudWatchLogsClient* pCwl; Aws::CloudWatchLogs::Model::CreateLogGroupRequest canaryLogGroupRequest; Aws::CloudWatchLogs::Model::CreateLogStreamRequest canaryLogStreamRequest; Aws::CloudWatchLogs::Model::PutLogEventsRequest canaryPutLogEventRequest; Aws::CloudWatchLogs::Model::PutLogEventsResult canaryPutLogEventresult; Aws::Vector canaryInputLogEventVec; Aws::String token; string logGroupName; string logStreamName; std::recursive_mutex mutex; CloudwatchLogsObject(); }; typedef class CloudwatchLogsObject* PCloudwatchLogsObject; CanaryLogs(); STATUS initializeCloudwatchLogger(PCloudwatchLogsObject pCloudwatchLogsObject); static VOID setUpLogEventVector(PCHAR logString); static VOID onPutLogEventResponseReceivedHandler(const Aws::CloudWatchLogs::CloudWatchLogsClient* cwClientLog, const Aws::CloudWatchLogs::Model::PutLogEventsRequest& request, const Aws::CloudWatchLogs::Model::PutLogEventsOutcome& outcome, const std::shared_ptr& context); VOID canaryStreamSendLogs(PCloudwatchLogsObject pCloudwatchLogsObject); VOID canaryStreamSendLogSync(PCloudwatchLogsObject pCloudwatchLogsObject); };