2626#include " absl/status/statusor.h"
2727#include " absl/synchronization/blocking_counter.h"
2828#include " absl/time/time.h"
29+ #include " google/protobuf/util/time_util.h"
2930#include " src/roma/byob/config/config.h"
3031#include " src/roma/byob/interface/roma_service.h"
3132#include " src/roma/byob/sample_udf/sample_udf_interface.pb.h"
@@ -57,7 +58,7 @@ std::pair<ExecutionFunc, CleanupFunc> CreateByobRpcFunc(
5758 Mode mode, std::atomic<std::int64_t >& completions,
5859 SyscallFiltering syscall_filtering, bool disable_ipc_namespace,
5960 absl::Duration connection_timeout, std::string_view function_name,
60- int prime_count ) {
61+ const std::vector<std::string>& input_args ) {
6162 std::unique_ptr<AppService> roma_service = std::make_unique<AppService>();
6263 CHECK_OK (roma_service->Init (
6364 /* config=*/ {.lib_mounts = std::string (lib_mounts),
@@ -72,8 +73,19 @@ std::pair<ExecutionFunc, CleanupFunc> CreateByobRpcFunc(
7273 ::privacy_sandbox::roma_byob::example::SampleRequest request;
7374 if (function_name == " PrimeSieve" ) {
7475 request.set_function (FUNCTION_PRIME_SIEVE);
75- if (prime_count > 0 ) {
76- request.set_prime_count (prime_count);
76+
77+ if (!input_args.empty ()) {
78+ int prime_count = 0 ;
79+ absl::Duration prime_duration;
80+ if (absl::SimpleAtoi (input_args[0 ], &prime_count)) {
81+ LOG (INFO) << " Running PrimeSieve with prime count: " << prime_count;
82+ request.set_prime_count (prime_count);
83+ } else if (absl::ParseDuration (input_args[0 ], &prime_duration)) {
84+ LOG (INFO) << " Running PrimeSieve for duration: " << prime_duration;
85+ *request.mutable_duration () =
86+ google::protobuf::util::TimeUtil::NanosecondsToDuration (
87+ absl::ToInt64Nanoseconds (prime_duration));
88+ }
7789 }
7890 } else if (function_name == " Clone" ) {
7991 request.set_function (FUNCTION_CLONE);
0 commit comments