MCPcopy Create free account
hub / github.com/3rdparty/libprocess / ClientProcess

Class ClientProcess

src/tests/benchmarks.cpp:105–219  ·  view source on GitHub ↗

A process that emulates the 'client' side of a ping pong game. An HTTP '/run' request performs a run and returns the time elapsed.

Source from the content-addressed store, hash-verified

103// A process that emulates the 'client' side of a ping pong game.
104// An HTTP '/run' request performs a run and returns the time elapsed.
105class ClientProcess : public Process<ClientProcess>
106{
107public:
108 ClientProcess()
109 : requests(0),
110 responses(0),
111 totalRequests(0),
112 concurrency(0) {}
113
114 ~ClientProcess() override {}
115
116protected:
117 void initialize() override
118 {
119 install("pong", &ClientProcess::pong);
120
121 route("/run", None(), &ClientProcess::run);
122 }
123
124private:
125 Future<http::Response> run(const http::Request& request)
126 {
127 if (duration.get() != nullptr) {
128 return http::BadRequest("A run is already in progress");
129 }
130
131 hashmap<string, Option<string>> parameters {
132 {"server", request.url.query.get("server")},
133 {"messageSize", request.url.query.get("messageSize")},
134 {"requests", request.url.query.get("requests")},
135 {"concurrency", request.url.query.get("concurrency")},
136 };
137
138 // Ensure all parameters were provided.
139 foreachpair (const string& parameter,
140 const Option<string>& value,
141 parameters) {
142 if (value.isNone()) {
143 return http::BadRequest("Missing '" + parameter + "' parameter");
144 }
145 }
146
147 server = UPID(parameters["server"].get());
148 link(server);
149
150 Try<Bytes> messageSize = Bytes::parse(parameters["messageSize"].get());
151 if (messageSize.isError()) {
152 return http::BadRequest("Invalid 'messageSize': " + messageSize.error());
153 }
154 message = string(messageSize->bytes(), '1');
155
156 Try<size_t> numify_ = numify<size_t>(parameters["requests"].get());
157 if (numify_.isError()) {
158 return http::BadRequest("Invalid 'requests': " + numify_.error());
159 }
160 totalRequests = numify_.get();
161
162 numify_ = numify<size_t>(parameters["concurrency"].get());

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected