summaryrefslogtreecommitdiff
path: root/cpp/src/polo/pairing/message/optionsmessage.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/polo/pairing/message/optionsmessage.h')
-rw-r--r--cpp/src/polo/pairing/message/optionsmessage.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/cpp/src/polo/pairing/message/optionsmessage.h b/cpp/src/polo/pairing/message/optionsmessage.h
new file mode 100644
index 0000000..3291b25
--- /dev/null
+++ b/cpp/src/polo/pairing/message/optionsmessage.h
@@ -0,0 +1,83 @@
+// Copyright 2012 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef POLO_PAIRING_MESSAGE_OPTIONSMESSAGE_H_
+#define POLO_PAIRING_MESSAGE_OPTIONSMESSAGE_H_
+
+#include <set>
+#include <string>
+#include "polo/encoding/encodingoption.h"
+#include "polo/pairing/message/polomessage.h"
+
+namespace polo {
+namespace pairing {
+namespace message {
+
+// A message containing the Polo pairing options.
+class OptionsMessage : public PoloMessage {
+ public:
+ // The device role. The display device will be responsible for displaying
+ // a secret code, and the user will enter the secret on the input device.
+ enum ProtocolRole {
+ kUnknown = 0,
+ kInputDevice = 1,
+ kDisplayDevice = 2,
+ };
+
+ // Creates an empty options message. The supported encodings and protocol
+ // role preference should be set before sending this message.
+ OptionsMessage();
+
+ // Adds a supported input encoding.
+ void AddInputEncoding(const encoding::EncodingOption& encoding);
+
+ // Adds a supported output encoding.
+ void AddOutputEncoding(const encoding::EncodingOption& encoding);
+
+ // Determines whether the given input encoding is supported.
+ bool SupportsInputEncoding(
+ const encoding::EncodingOption& encoding) const;
+
+ // Determines whether the given output encoding is supported.
+ bool SupportsOutputEncoding(
+ const encoding::EncodingOption& encoding) const;
+
+ // Sets the protocol role preference.
+ void set_protocol_role_preference(ProtocolRole preference);
+
+ // Gets the protocol role preference.
+ ProtocolRole protocol_role_preference() const;
+
+ // Gets the set of supported input encodings.
+ const encoding::EncodingOption::EncodingSet& input_encodings() const;
+
+ // Gets the set of supported output encodings.
+ const encoding::EncodingOption::EncodingSet& output_encodings() const;
+
+ // @override
+ virtual std::string ToString() const;
+
+ private:
+ ProtocolRole protocol_role_preference_;
+ encoding::EncodingOption::EncodingSet input_encodings_;
+ encoding::EncodingOption::EncodingSet output_encodings_;
+
+ DISALLOW_COPY_AND_ASSIGN(OptionsMessage);
+};
+
+} // namespace message
+} // namespace pairing
+} // namespace polo
+
+#endif // POLO_PAIRING_MESSAGE_OPTIONSMESSAGE_H_