Apache Mesos
type_utils.hpp
Go to the documentation of this file.
1 // Licensed to the Apache Software Foundation (ASF) under one
2 // or more contributor license agreements. See the NOTICE file
3 // distributed with this work for additional information
4 // regarding copyright ownership. The ASF licenses this file
5 // to you under the Apache License, Version 2.0 (the
6 // "License"); you may not use this file except in compliance
7 // with the License. You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 
17 #ifndef __MESOS_TYPE_UTILS_H__
18 #define __MESOS_TYPE_UTILS_H__
19 
20 #include <iosfwd>
21 #include <string>
22 #include <vector>
23 
24 #include <boost/functional/hash.hpp>
25 
26 #include <google/protobuf/map.h>
27 #include <google/protobuf/repeated_field.h>
28 
29 #include <mesos/mesos.hpp>
30 
31 #include <stout/stringify.hpp>
32 #include <stout/strings.hpp>
33 #include <stout/uuid.hpp>
34 
35 // This file includes definitions for operators on public protobuf
36 // classes (defined in mesos.proto, module.proto, etc.) that don't
37 // have these operators generated by the protobuf compiler. The
38 // corresponding definitions are in src/common/type_utils.cpp.
39 //
40 // Mesos modules need some of the protobuf classes defined in
41 // mesos.proto, module.proto, etc., and require some of these
42 // operators declared in type_utils.hpp. Exposing type_utils.hpp
43 // allows us to build modules without having a dependency on mesos
44 // source tree (src/*).
45 
46 namespace mesos {
47 
48 bool operator==(const CheckStatusInfo& left, const CheckStatusInfo& right);
49 bool operator==(const CommandInfo& left, const CommandInfo& right);
50 bool operator==(const CommandInfo::URI& left, const CommandInfo::URI& right);
51 bool operator==(const ContainerID& left, const ContainerID& right);
52 bool operator==(const ContainerInfo& left, const ContainerInfo& right);
53 bool operator==(const Credential& left, const Credential& right);
54 bool operator==(const CSIPluginInfo& left, const CSIPluginInfo& right);
55 
56 bool operator==(
57  const CSIPluginContainerInfo& left,
58  const CSIPluginContainerInfo& right);
59 
60 bool operator==(const DiscoveryInfo& left, const DiscoveryInfo& right);
61 bool operator==(const Environment& left, const Environment& right);
62 bool operator==(const ExecutorInfo& left, const ExecutorInfo& right);
63 bool operator==(const Label& left, const Label& right);
64 bool operator==(const Labels& left, const Labels& right);
65 bool operator==(const MasterInfo& left, const MasterInfo& right);
66 bool operator==(const Offer::Operation& left, const Offer::Operation& right);
67 bool operator==(const Operation& left, const Operation& right);
68 bool operator==(const OperationStatus& left, const OperationStatus& right);
69 
70 bool operator==(
71  const ResourceProviderInfo& left,
72  const ResourceProviderInfo& right);
73 
74 bool operator==(
75  const ResourceStatistics& left,
76  const ResourceStatistics& right);
77 
78 bool operator==(const SlaveInfo& left, const SlaveInfo& right);
79 bool operator==(const Task& left, const Task& right);
80 bool operator==(const TaskGroupInfo& left, const TaskGroupInfo& right);
81 bool operator==(const TaskInfo& left, const TaskInfo& right);
82 bool operator==(const TaskStatus& left, const TaskStatus& right);
83 bool operator==(const URL& left, const URL& right);
84 bool operator==(const UUID& left, const UUID& right);
85 bool operator==(const Volume& left, const Volume& right);
86 
87 bool operator!=(const CheckStatusInfo& left, const CheckStatusInfo& right);
88 bool operator!=(const ExecutorInfo& left, const ExecutorInfo& right);
89 bool operator!=(const Labels& left, const Labels& right);
90 bool operator!=(const Offer::Operation& left, const Offer::Operation& right);
91 bool operator!=(const Operation& left, const Operation& right);
92 bool operator!=(const OperationStatus& left, const OperationStatus& right);
93 
94 bool operator!=(const TaskStatus& left, const TaskStatus& right);
95 
96 inline bool operator==(const ExecutorID& left, const ExecutorID& right)
97 {
98  return left.value() == right.value();
99 }
100 
101 
102 inline bool operator==(const FrameworkID& left, const FrameworkID& right)
103 {
104  return left.value() == right.value();
105 }
106 
107 
108 inline bool operator==(const FrameworkInfo& left, const FrameworkInfo& right)
109 {
110  return (left.name() == right.name()) && (left.user() == right.user());
111 }
112 
113 
114 inline bool operator==(const OfferID& left, const OfferID& right)
115 {
116  return left.value() == right.value();
117 }
118 
119 
120 inline bool operator==(const OperationID& left, const OperationID& right)
121 {
122  return left.value() == right.value();
123 }
124 
125 
126 inline bool operator==(
127  const ResourceProviderID& left,
128  const ResourceProviderID& right)
129 {
130  return left.value() == right.value();
131 }
132 
133 
134 inline bool operator==(const SlaveID& left, const SlaveID& right)
135 {
136  return left.value() == right.value();
137 }
138 
139 
140 inline bool operator==(const TaskID& left, const TaskID& right)
141 {
142  return left.value() == right.value();
143 }
144 
145 
146 inline bool operator==(const TimeInfo& left, const TimeInfo& right)
147 {
148  return left.nanoseconds() == right.nanoseconds();
149 }
150 
151 
152 inline bool operator==(const DurationInfo& left, const DurationInfo& right)
153 {
154  return left.nanoseconds() == right.nanoseconds();
155 }
156 
157 
158 inline bool operator==(const ContainerID& left, const std::string& right)
159 {
160  return left.value() == right;
161 }
162 
163 
164 inline bool operator==(const ExecutorID& left, const std::string& right)
165 {
166  return left.value() == right;
167 }
168 
169 
170 inline bool operator==(const FrameworkID& left, const std::string& right)
171 {
172  return left.value() == right;
173 }
174 
175 
176 inline bool operator==(const OfferID& left, const std::string& right)
177 {
178  return left.value() == right;
179 }
180 
181 
182 inline bool operator==(const SlaveID& left, const std::string& right)
183 {
184  return left.value() == right;
185 }
186 
187 
188 inline bool operator==(const TaskID& left, const std::string& right)
189 {
190  return left.value() == right;
191 }
192 
193 
194 inline bool operator==(
195  const DomainInfo::FaultDomain::RegionInfo& left,
196  const DomainInfo::FaultDomain::RegionInfo& right)
197 {
198  return left.name() == right.name();
199 }
200 
201 
202 inline bool operator==(
203  const DomainInfo::FaultDomain::ZoneInfo& left,
204  const DomainInfo::FaultDomain::ZoneInfo& right)
205 {
206  return left.name() == right.name();
207 }
208 
209 
210 inline bool operator==(
211  const DomainInfo::FaultDomain& left,
212  const DomainInfo::FaultDomain& right)
213 {
214  return left.region() == right.region() && left.zone() == right.zone();
215 }
216 
217 
218 inline bool operator==(const DomainInfo& left, const DomainInfo& right)
219 {
220  return left.fault_domain() == right.fault_domain();
221 }
222 
223 
228 inline bool operator==(const MachineID& left, const MachineID& right)
229 {
230  // NOTE: Both fields default to the empty string if they are not specified,
231  // so the string comparisons are safe.
232  return left.has_hostname() == right.has_hostname() &&
233  strings::lower(left.hostname()) == strings::lower(right.hostname()) &&
234  left.has_ip() == right.has_ip() &&
235  left.ip() == right.ip();
236 }
237 
238 
239 inline bool operator!=(const ContainerID& left, const ContainerID& right)
240 {
241  return !(left == right);
242 }
243 
244 
245 inline bool operator!=(
246  const CSIPluginContainerInfo& left,
247  const CSIPluginContainerInfo& right)
248 {
249  return !(left == right);
250 }
251 
252 
253 inline bool operator!=(const ExecutorID& left, const ExecutorID& right)
254 {
255  return left.value() != right.value();
256 }
257 
258 
259 inline bool operator!=(const FrameworkID& left, const FrameworkID& right)
260 {
261  return left.value() != right.value();
262 }
263 
264 
265 inline bool operator!=(const OperationID& left, const OperationID& right)
266 {
267  return left.value() != right.value();
268 }
269 
270 
271 inline bool operator!=(
272  const ResourceProviderID& left,
273  const ResourceProviderID& right)
274 {
275  return left.value() != right.value();
276 }
277 
278 
279 inline bool operator!=(const SlaveID& left, const SlaveID& right)
280 {
281  return left.value() != right.value();
282 }
283 
284 
285 inline bool operator!=(
286  const ResourceProviderInfo& left,
287  const ResourceProviderInfo& right)
288 {
289  return !(left == right);
290 }
291 
292 
293 inline bool operator!=(const TimeInfo& left, const TimeInfo& right)
294 {
295  return !(left == right);
296 }
297 
298 
299 inline bool operator!=(const UUID& left, const UUID& right)
300 {
301  return !(left == right);
302 }
303 
304 
305 inline bool operator!=(const DurationInfo& left, const DurationInfo& right)
306 {
307  return !(left == right);
308 }
309 
310 
311 inline bool operator!=(
312  const DomainInfo::FaultDomain::RegionInfo& left,
313  const DomainInfo::FaultDomain::RegionInfo& right)
314 {
315  return left.name() != right.name();
316 }
317 
318 
319 inline bool operator<(const ContainerID& left, const ContainerID& right)
320 {
321  return left.value() < right.value();
322 }
323 
324 
325 inline bool operator<(const ExecutorID& left, const ExecutorID& right)
326 {
327  return left.value() < right.value();
328 }
329 
330 
331 inline bool operator<(const FrameworkID& left, const FrameworkID& right)
332 {
333  return left.value() < right.value();
334 }
335 
336 
337 inline bool operator<(const OfferID& left, const OfferID& right)
338 {
339  return left.value() < right.value();
340 }
341 
342 
343 inline bool operator<(const SlaveID& left, const SlaveID& right)
344 {
345  return left.value() < right.value();
346 }
347 
348 
349 inline bool operator<(const TaskID& left, const TaskID& right)
350 {
351  return left.value() < right.value();
352 }
353 
354 
355 std::ostream& operator<<(
356  std::ostream& stream,
357  const CapabilityInfo& capabilityInfo);
358 
359 
360 std::ostream& operator<<(
361  std::ostream& stream,
362  const DeviceWhitelist& deviceWhitelist);
363 
364 
365 std::ostream& operator<<(
366  std::ostream& stream,
367  const CheckStatusInfo& checkStatusInfo);
368 
369 
370 std::ostream& operator<<(std::ostream& stream, const CommandInfo& commandInfo);
371 
372 
373 std::ostream& operator<<(std::ostream& stream, const ContainerID& containerId);
374 
375 
376 std::ostream& operator<<(
377  std::ostream& stream,
378  const ContainerInfo& containerInfo);
379 
380 
381 std::ostream& operator<<(std::ostream& stream, const DomainInfo& domainInfo);
382 
383 
384 std::ostream& operator<<(std::ostream& stream, const Environment& environment);
385 
386 
387 std::ostream& operator<<(std::ostream& stream, const ExecutorID& executorId);
388 
389 
390 std::ostream& operator<<(std::ostream& stream, const ExecutorInfo& executor);
391 
392 
393 std::ostream& operator<<(std::ostream& stream, const FrameworkID& frameworkId);
394 
395 
396 std::ostream& operator<<(std::ostream& stream, const MasterInfo& master);
397 
398 
399 std::ostream& operator<<(std::ostream& stream, const OfferID& offerId);
400 
401 
402 std::ostream& operator<<(std::ostream& stream, const OperationID& operationId);
403 
404 
405 std::ostream& operator<<(std::ostream& stream, const OperationState& state);
406 
407 
408 std::ostream& operator<<(std::ostream& stream, const RateLimits& limits);
409 
410 
411 std::ostream& operator<<(
412  std::ostream& stream,
413  const ResourceProviderID& resourceProviderId);
414 
415 
416 std::ostream& operator<<(
417  std::ostream& stream,
418  const ResourceProviderInfo& resourceProviderInfo);
419 
420 
421 std::ostream& operator<<(std::ostream& stream, const RLimitInfo& rlimitInfo);
422 
423 
424 std::ostream& operator<<(std::ostream& stream, const SlaveID& slaveId);
425 
426 
427 std::ostream& operator<<(std::ostream& stream, const SlaveInfo& slave);
428 
429 
430 std::ostream& operator<<(std::ostream& stream, const TaskID& taskId);
431 
432 
433 std::ostream& operator<<(std::ostream& stream, const MachineID& machineId);
434 
435 
436 std::ostream& operator<<(std::ostream& stream, const TaskInfo& task);
437 
438 
439 std::ostream& operator<<(std::ostream& stream, const TaskState& state);
440 
441 
442 std::ostream& operator<<(
443  std::ostream& stream,
444  const UUID& uuid);
445 
446 
447 std::ostream& operator<<(std::ostream& stream, const CheckInfo::Type& type);
448 
449 
450 std::ostream& operator<<(
451  std::ostream& stream,
452  const CSIPluginContainerInfo::Service& service);
453 
454 
455 std::ostream& operator<<(
456  std::ostream& stream,
457  const FrameworkInfo::Capability& capability);
458 
459 
460 std::ostream& operator<<(std::ostream& stream, const Image::Type& imageType);
461 
462 
463 std::ostream& operator<<(std::ostream& stream, const Secret::Type& secretType);
464 
465 
466 std::ostream& operator<<(
467  std::ostream& stream,
468  const Offer::Operation::Type& operationType);
469 
470 
471 std::ostream& operator<<(
472  std::ostream& stream,
473  const Resource::DiskInfo::Source::Type& sourceType);
474 
475 
476 template <typename T>
477 inline std::ostream& operator<<(
478  std::ostream& stream,
479  const std::vector<T>& messages)
480 {
481  stream << "[ ";
482  for (auto it = messages.begin(); it != messages.end(); ++it) {
483  if (it != messages.begin()) {
484  stream << ", ";
485  }
486  stream << *it;
487  }
488  stream << " ]";
489  return stream;
490 }
491 
492 } // namespace mesos {
493 
494 
500 namespace google {
501 namespace protobuf {
502 
503 template <typename Key, typename Value>
504 inline bool operator==(
505  const Map<Key, Value>& left, const Map<Key, Value>& right)
506 {
507  if (left.size() != right.size()) {
508  return false;
509  }
510 
511  for (auto it = left.begin(); it != left.end(); ++it) {
512  auto found = right.find(it->first);
513  if (found == right.end() || found->second != it->second) {
514  return false;
515  }
516  }
517 
518  return true;
519 }
520 
521 
522 template <typename Key, typename Value>
523 inline bool operator!=(
524  const Map<Key, Value>& left, const Map<Key, Value>& right)
525 {
526  return !(left == right);
527 }
528 
529 
530 template <typename T>
531 inline std::ostream& operator<<(
532  std::ostream& stream,
533  const RepeatedPtrField<T>& messages)
534 {
535  stream << "[ ";
536  for (auto it = messages.begin(); it != messages.end(); ++it) {
537  if (it != messages.begin()) {
538  stream << ", ";
539  }
540  stream << *it;
541  }
542  stream << " ]";
543  return stream;
544 }
545 
546 } // namespace protobuf {
547 } // namespace google {
548 
549 
550 namespace std {
551 
552 template <>
553 struct hash<mesos::CommandInfo::URI>
554 {
555  typedef size_t result_type;
556 
557  typedef mesos::CommandInfo::URI argument_type;
558 
559  result_type operator()(const argument_type& uri) const
560  {
561  size_t seed = 0;
562 
563  if (uri.extract()) {
564  seed += 11;
565  }
566 
567  if (uri.executable()) {
568  seed += 2003;
569  }
570 
571  boost::hash_combine(seed, uri.value());
572  boost::hash_combine(seed, uri.output_file());
573  return seed;
574  }
575 };
576 
577 
578 template <>
579 struct hash<mesos::ContainerID>
580 {
581  typedef size_t result_type;
582 
583  typedef mesos::ContainerID argument_type;
584 
585  result_type operator()(const argument_type& containerId) const
586  {
587  size_t seed = 0;
588  boost::hash_combine(seed, containerId.value());
589 
590  if (containerId.has_parent()) {
591  boost::hash_combine(
592  seed,
593  std::hash<mesos::ContainerID>()(containerId.parent()));
594  }
595 
596  return seed;
597  }
598 };
599 
600 
601 template <>
602 struct hash<mesos::ExecutorID>
603 {
604  typedef size_t result_type;
605 
606  typedef mesos::ExecutorID argument_type;
607 
608  result_type operator()(const argument_type& executorId) const
609  {
610  size_t seed = 0;
611  boost::hash_combine(seed, executorId.value());
612  return seed;
613  }
614 };
615 
616 
617 template <>
618 struct hash<mesos::FrameworkID>
619 {
620  typedef size_t result_type;
621 
622  typedef mesos::FrameworkID argument_type;
623 
624  result_type operator()(const argument_type& frameworkId) const
625  {
626  size_t seed = 0;
627  boost::hash_combine(seed, frameworkId.value());
628  return seed;
629  }
630 };
631 
632 
633 template <>
634 struct hash<mesos::OfferID>
635 {
636  typedef size_t result_type;
637 
638  typedef mesos::OfferID argument_type;
639 
640  result_type operator()(const argument_type& offerId) const
641  {
642  size_t seed = 0;
643  boost::hash_combine(seed, offerId.value());
644  return seed;
645  }
646 };
647 
648 
649 template <>
650 struct hash<mesos::SlaveID>
651 {
652  typedef size_t result_type;
653 
654  typedef mesos::SlaveID argument_type;
655 
656  result_type operator()(const argument_type& slaveId) const
657  {
658  size_t seed = 0;
659  boost::hash_combine(seed, slaveId.value());
660  return seed;
661  }
662 };
663 
664 
665 template <>
666 struct hash<mesos::TaskID>
667 {
668  typedef size_t result_type;
669 
670  typedef mesos::TaskID argument_type;
671 
672  result_type operator()(const argument_type& taskId) const
673  {
674  size_t seed = 0;
675  boost::hash_combine(seed, taskId.value());
676  return seed;
677  }
678 };
679 
680 
681 template <>
682 struct hash<mesos::TaskState>
683 {
684  typedef size_t result_type;
685 
686  typedef mesos::TaskState argument_type;
687 
688  result_type operator()(const argument_type& taskState) const
689  {
690  // Use the underlying type of the enum as hash value.
691  return static_cast<size_t>(taskState);
692  }
693 };
694 
695 
696 template <>
697 struct hash<mesos::TaskStatus_Source>
698 {
699  typedef size_t result_type;
700 
701  typedef mesos::TaskStatus_Source argument_type;
702 
703  result_type operator()(const argument_type& source) const
704  {
705  // Use the underlying type of the enum as hash value.
706  return static_cast<size_t>(source);
707  }
708 };
709 
710 
711 template <>
712 struct hash<mesos::TaskStatus_Reason>
713 {
714  typedef size_t result_type;
715 
716  typedef mesos::TaskStatus_Reason argument_type;
717 
718  result_type operator()(const argument_type& reason) const
719  {
720  // Use the underlying type of the enum as hash value.
721  return static_cast<size_t>(reason);
722  }
723 };
724 
725 
726 template <>
727 struct hash<mesos::Image::Type>
728 {
729  typedef size_t result_type;
730 
732 
733  result_type operator()(const argument_type& imageType) const
734  {
735  // Use the underlying type of the enum as hash value.
736  return static_cast<size_t>(imageType);
737  }
738 };
739 
740 
741 template <>
742 struct hash<std::pair<mesos::FrameworkID, mesos::ExecutorID>>
743 {
744  typedef size_t result_type;
745 
746  typedef std::pair<
747  mesos::FrameworkID, mesos::ExecutorID> argument_type;
748 
749  result_type operator()(const argument_type& pair) const
750  {
751  size_t seed = 0;
752  boost::hash_combine(seed, std::hash<mesos::FrameworkID>()(pair.first));
753  boost::hash_combine(seed, std::hash<mesos::ExecutorID>()(pair.second));
754  return seed;
755  }
756 };
757 
758 
759 template <>
760 struct hash<mesos::MachineID>
761 {
762  typedef size_t result_type;
763 
764  typedef mesos::MachineID argument_type;
765 
766  result_type operator()(const argument_type& machineId) const
767  {
768  size_t seed = 0;
769  boost::hash_combine(seed, strings::lower(machineId.hostname()));
770  boost::hash_combine(seed, machineId.ip());
771  return seed;
772  }
773 };
774 
775 
776 template <>
777 struct hash<mesos::OperationID>
778 {
779  typedef size_t result_type;
780 
781  typedef mesos::OperationID argument_type;
782 
783  result_type operator()(const argument_type& operationId) const
784  {
785  size_t seed = 0;
786  boost::hash_combine(seed, operationId.value());
787  return seed;
788  }
789 };
790 
791 
792 template <>
793 struct hash<mesos::ResourceProviderID>
794 {
795  typedef size_t result_type;
796 
797  typedef mesos::ResourceProviderID argument_type;
798 
799  result_type operator()(const argument_type& resourceProviderId) const
800  {
801  size_t seed = 0;
802  boost::hash_combine(seed, resourceProviderId.value());
803  return seed;
804  }
805 };
806 
807 
808 template <>
809 struct hash<mesos::UUID>
810 {
811  typedef size_t result_type;
812 
813  typedef mesos::UUID argument_type;
814 
815  result_type operator()(const argument_type& uuid) const
816  {
817  size_t seed = 0;
818  boost::hash_combine(seed, uuid.value());
819  return seed;
820  }
821 };
822 
823 } // namespace std {
824 
825 #endif // __MESOS_TYPE_UTILS_H__
std::ostream & operator<<(std::ostream &stream, const Attribute &attribute)
size_t result_type
Definition: type_utils.hpp:811
Definition: type_utils.hpp:618
mesos::MachineID argument_type
Definition: type_utils.hpp:764
result_type operator()(const argument_type &executorId) const
Definition: type_utils.hpp:608
size_t result_type
Definition: type_utils.hpp:604
Definition: master.hpp:27
result_type operator()(const argument_type &containerId) const
Definition: type_utils.hpp:585
mesos::Image::Type argument_type
Definition: type_utils.hpp:731
result_type operator()(const argument_type &slaveId) const
Definition: type_utils.hpp:656
result_type operator()(const argument_type &uri) const
Definition: type_utils.hpp:559
size_t result_type
Definition: type_utils.hpp:668
result_type operator()(const argument_type &resourceProviderId) const
Definition: type_utils.hpp:799
mesos::TaskStatus_Source argument_type
Definition: type_utils.hpp:701
bool operator==(const Resource::ReservationInfo &left, const Resource::ReservationInfo &right)
Definition: type_utils.hpp:550
result_type operator()(const argument_type &offerId) const
Definition: type_utils.hpp:640
mesos::TaskState argument_type
Definition: type_utils.hpp:686
mesos::ContainerID argument_type
Definition: type_utils.hpp:583
Capability
Definition: capabilities.hpp:35
result_type operator()(const argument_type &reason) const
Definition: type_utils.hpp:718
Operation
Definition: cgroups.hpp:458
result_type operator()(const argument_type &machineId) const
Definition: type_utils.hpp:766
size_t result_type
Definition: type_utils.hpp:762
bool operator<(const ContainerID &left, const ContainerID &right)
Definition: type_utils.hpp:319
mesos::TaskID argument_type
Definition: type_utils.hpp:670
size_t result_type
Definition: type_utils.hpp:714
size_t result_type
Definition: type_utils.hpp:699
mesos::ResourceProviderID argument_type
Definition: type_utils.hpp:797
mesos::FrameworkID argument_type
Definition: type_utils.hpp:622
size_t result_type
Definition: type_utils.hpp:729
result_type operator()(const argument_type &source) const
Definition: type_utils.hpp:703
bool operator!=(const Resource::ReservationInfo &left, const Resource::ReservationInfo &right)
Environment * environment
mesos::UUID argument_type
Definition: type_utils.hpp:813
result_type operator()(const argument_type &uuid) const
Definition: type_utils.hpp:815
Definition: spec.hpp:26
size_t result_type
Definition: type_utils.hpp:636
size_t result_type
Definition: type_utils.hpp:684
size_t result_type
Definition: type_utils.hpp:555
Definition: protobuf.hpp:60
size_t result_type
Definition: type_utils.hpp:779
result_type operator()(const argument_type &taskId) const
Definition: type_utils.hpp:672
std::pair< mesos::FrameworkID, mesos::ExecutorID > argument_type
Definition: type_utils.hpp:747
result_type operator()(const argument_type &frameworkId) const
Definition: type_utils.hpp:624
result_type operator()(const argument_type &pair) const
Definition: type_utils.hpp:749
Type
Definition: capabilities.hpp:79
mesos::CommandInfo::URI argument_type
Definition: type_utils.hpp:557
Try< uint32_t > type(const std::string &path)
Definition: type_utils.hpp:579
size_t result_type
Definition: type_utils.hpp:581
Definition: uri.hpp:21
Type utilities for the protobuf library that are not specific to particular protobuf classes...
Definition: type_utils.hpp:500
mesos::ExecutorID argument_type
Definition: type_utils.hpp:606
result_type operator()(const argument_type &imageType) const
Definition: type_utils.hpp:733
size_t result_type
Definition: type_utils.hpp:652
mesos::SlaveID argument_type
Definition: type_utils.hpp:654
mesos::TaskStatus_Reason argument_type
Definition: type_utils.hpp:716
std::string lower(const std::string &s)
Definition: strings.hpp:429
mesos::OperationID argument_type
Definition: type_utils.hpp:781
mesos::OfferID argument_type
Definition: type_utils.hpp:638
size_t result_type
Definition: type_utils.hpp:795
result_type operator()(const argument_type &operationId) const
Definition: type_utils.hpp:783
Definition: type_utils.hpp:602
size_t result_type
Definition: type_utils.hpp:620
result_type operator()(const argument_type &taskState) const
Definition: type_utils.hpp:688