11#ifdef __faasm
2- extern " C"
3- {
2+ extern " C" {
43#include " faasm/host_interface.h"
54}
65
76#include < faasm/faasm.h>
87#else
8+ #include " s3/S3Wrapper.hpp"
99#include < cstdlib>
1010#include < fstream>
1111#include < iostream>
12- #include " s3/S3Wrapper.hpp"
1312#endif
1413
1514#include " accless.h"
@@ -20,8 +19,8 @@ extern "C"
2019#include < string_view>
2120#include < vector>
2221
23- std::vector<std::string> splitByDelimiter (std::string stringCopy, const std::string& delimiter)
24- {
22+ std::vector<std::string> splitByDelimiter (std::string stringCopy,
23+ const std::string &delimiter) {
2524 std::vector<std::string> splitString;
2625
2726 size_t pos = 0 ;
@@ -37,8 +36,7 @@ std::vector<std::string> splitByDelimiter(std::string stringCopy, const std::str
3736
3837/* Run Audit Rule - FINRA workflow
3938 */
40- int main (int argc, char ** argv)
41- {
39+ int main (int argc, char **argv) {
4240 // TODO: the bucket name is currently hardcoded
4341 std::string bucketName = " tless" ;
4442
@@ -50,7 +48,7 @@ int main(int argc, char** argv)
5048 // Get the object key as an input
5149 int inputSize = faasmGetInputSize ();
5250 char inputChar[inputSize];
53- faasmGetInput ((uint8_t *)inputChar, inputSize);
51+ faasmGetInput ((uint8_t *)inputChar, inputSize);
5452
5553 std::string tmpStr (inputChar, inputChar + inputSize);
5654 auto parts = splitByDelimiter (tmpStr, " :" );
@@ -78,83 +76,80 @@ int main(int argc, char** argv)
7876 std::string us = " audit-" + std::to_string (id);
7977
8078 if (!accless::checkChain (" finra" , " audit" , id)) {
81- std::cerr << " finra(" << us << " ): error checking TLess chain" << std::endl;
79+ std::cerr << " finra(" << us << " ): error checking TLess chain"
80+ << std::endl;
8281 return 1 ;
8382 }
8483
8584 std::cout << " finra(" << us << " ): fetching public trades data from "
86- << tradesKey
87- << std::endl;
85+ << tradesKey << std::endl;
8886
8987 std::vector<uint8_t > tradeData;
9088#ifdef __faasm
91- uint8_t * keyBytes;
89+ uint8_t * keyBytes;
9290 int keyBytesLen;
9391
94- int ret =
95- __faasm_s3_get_key_bytes (bucketName. c_str (), tradesKey. c_str (), &keyBytes, &keyBytesLen);
92+ int ret = __faasm_s3_get_key_bytes (bucketName. c_str (), tradesKey. c_str (),
93+ &keyBytes, &keyBytesLen);
9694 if (ret != 0 ) {
97- std::cerr << " finra(" << us << " ): error: error getting bytes from key: "
98- << tradesKey << " (bucket : " << bucketName << " ) "
99- << std::endl;
95+ std::cerr << " finra(" << us
96+ << " ): error: error getting bytes from key : " << tradesKey
97+ << " (bucket: " << bucketName << " ) " << std::endl;
10098 return 1 ;
10199 }
102100 // WARNING: can we avoid the copy
103- tradeData.assign ((char *) keyBytes, (char *) keyBytes + keyBytesLen);
101+ tradeData.assign ((char *) keyBytes, (char *) keyBytes + keyBytesLen);
104102#else
105103 tradeData = s3cli.getKeyBytes (bucketName, tradesKey);
106104#endif
107105
108106 std::cout << " finra(" << us << " ): fetching portfolio data from "
109- << portfolioKey
110- << std::endl;
107+ << portfolioKey << std::endl;
111108
112109 std::vector<uint8_t > portfolioData;
113110#ifdef __faasm
114111 keyBytes = nullptr ;
115112 keyBytesLen = 0 ;
116113
117- ret =
118- __faasm_s3_get_key_bytes (bucketName. c_str (), portfolioKey. c_str (), &keyBytes, &keyBytesLen);
114+ ret = __faasm_s3_get_key_bytes (bucketName. c_str (), portfolioKey. c_str (),
115+ &keyBytes, &keyBytesLen);
119116 if (ret != 0 ) {
120- std::cerr << " finra(" << us << " ): error: error getting bytes from key: "
121- << portfolioKey << " (bucket : " << bucketName << " ) "
122- << std::endl;
117+ std::cerr << " finra(" << us
118+ << " ): error: error getting bytes from key : " << portfolioKey
119+ << " (bucket: " << bucketName << " ) " << std::endl;
123120 return 1 ;
124121 }
125122 // WARNING: can we avoid the copy
126- portfolioData.assign ((char *) keyBytes, (char *) keyBytes + keyBytesLen);
123+ portfolioData.assign ((char *) keyBytes, (char *) keyBytes + keyBytesLen);
127124#else
128125 portfolioData = s3cli.getKeyBytes (bucketName, portfolioKey);
129126#endif
130127
131128 std::cout << " finra(" << us << " ): de-serializing data" << std::endl;
132- std::vector<TradeData> trades = tless::finra::deserializeTradeVector (tradeData);
129+ std::vector<TradeData> trades =
130+ tless::finra::deserializeTradeVector (tradeData);
133131 Portfolio portfolio = tless::finra::deserializePortfolio (portfolioData);
134132
135- std::cout << " finra(" << us << " ): running audit rule on " << trades.size () << " trades ..." << std::endl;
133+ std::cout << " finra(" << us << " ): running audit rule on " << trades.size ()
134+ << " trades ..." << std::endl;
136135 std::string auditResults;
137- for (const auto & trade : trades) {
138- bool insideTradeDetected =
139- tless::finra::rules::potentialInsiderTrade ( portfolio, trades, trade.date );
136+ for (const auto & trade : trades) {
137+ bool insideTradeDetected = tless::finra::rules::potentialInsiderTrade (
138+ portfolio, trades, trade.date );
140139 auditResults += std::to_string (insideTradeDetected) + " ," ;
141140 }
142141 auditResults.pop_back ();
143142 std::cout << " finra(" << us << " ): done running audit rule!" << std::endl;
144143
145144 // Upload structured data to S3
146145 std::string key = " finra/outputs/audit/" + us;
147- std::cout << " finra(" << us << " ): uploading audit results to "
148- << key
146+ std::cout << " finra(" << us << " ): uploading audit results to " << key
149147 << std::endl;
150148#ifdef __faasm
151149 // Overwrite the results
152- ret =
153- __faasm_s3_add_key_bytes (bucketName.c_str (),
154- key.c_str (),
155- (uint8_t *) auditResults.c_str (),
156- auditResults.size (),
157- true );
150+ ret = __faasm_s3_add_key_bytes (bucketName.c_str (), key.c_str (),
151+ (uint8_t *)auditResults.c_str (),
152+ auditResults.size (), true );
158153 if (ret != 0 ) {
159154 std::cerr << " finra(" << us << " ): error uploading trade data"
160155 << std::endl;
0 commit comments