diff --git a/fbpcs/pc_translator/PCTranslator.cpp b/fbpcs/pc_translator/PCTranslator.cpp new file mode 100644 index 000000000..abc23e908 --- /dev/null +++ b/fbpcs/pc_translator/PCTranslator.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include "fbpcs/pc_translator/PCTranslator.h" + +namespace pc_translator { + +std::string PCTranslator::encode(const std::string& /* inputDataset */) { + throw std::runtime_error("Unimplemented"); +} + +std::string PCTranslator::decode( + const std::string& /* aggregatedOutputDataset */) { + throw std::runtime_error("Unimplemented"); +} + +void PCTranslator::retrieveInstructionSets( + std::vector& /* instructionSetNames */) { + throw std::runtime_error("Unimplemented"); +} + +std::vector PCTranslator::retrieveInstructionSetNamesForRun( + const std::string& /* pcsFeatures */) { + throw std::runtime_error("Unimplemented"); +} + +void PCTranslator::transformDataset(const std::string& /* input */) { + throw std::runtime_error("Unimplemented"); +} + +void PCTranslator::parseInstructionSet( + const std::string& /* instructionSet */) { + throw std::runtime_error("Unimplemented"); +} +} // namespace pc_translator diff --git a/fbpcs/pc_translator/PCTranslator.h b/fbpcs/pc_translator/PCTranslator.h new file mode 100644 index 000000000..0107e4025 --- /dev/null +++ b/fbpcs/pc_translator/PCTranslator.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include +#include +#include + +namespace pc_translator { + +/* + * This class contains functions required for PC Translator during actual run + * i.e. retrieving the PC instruction sets, filtering the set per active GK for + * run, encoding and decoding the dataset files input as per the instruction + * set. + */ +class PCTranslator { + public: + explicit PCTranslator(const std::string& pcsFeatures) + : pcsfeatures_(pcsFeatures) {} + + /* + * Method to encode the configurable fields in input dataset as per the active + * pc instruction sets for the run. This method will output the path of + * transformed input dataset, which can be used in further PC run. + */ + std::string encode(const std::string& inputDataset); + + /* + * Method to decode final aggregated output with the encoded breakdown Ids as + * the keys. This method will decode the breakdown Ids to original group Id + * values and format the aggregated output as per the new keys. Output of this + * method would be the path of the decoded aggregated output. + */ + std::string decode(const std::string& aggregatedOutputDataset); + + private: + std::string pcsfeatures_; + void retrieveInstructionSets(std::vector& instructionSetNames); + std::vector retrieveInstructionSetNamesForRun( + const std::string& pcsfeatures); + void parseInstructionSet(const std::string& instructionSet); + void transformDataset(const std::string& input); +}; + +} // namespace pc_translator