| Index: remoting/signaling/signaling_address.h
|
| diff --git a/remoting/signaling/signaling_address.h b/remoting/signaling/signaling_address.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..767bb22e4b5d0022426cbbd608e284caab2d2f81
|
| --- /dev/null
|
| +++ b/remoting/signaling/signaling_address.h
|
| @@ -0,0 +1,59 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef REMOTING_SIGNALING_SIGNALING_ADDRESS_H_
|
| +#define REMOTING_SIGNALING_SIGNALING_ADDRESS_H_
|
| +
|
| +#include <string>
|
| +
|
| +namespace buzz {
|
| +class XmlElement;
|
| +} // namespace buzz
|
| +
|
| +namespace remoting {
|
| +
|
| +// Represents an address of a Chromoting endpoint and its routing channel.
|
| +class SignalingAddress {
|
| + public:
|
| + enum class Channel { LCS, XMPP };
|
| + enum Direction { TO, FROM };
|
| +
|
| + static SignalingAddress Parse(const buzz::XmlElement* iq,
|
| + Direction direction,
|
| + std::string* error);
|
| +
|
| + void SetInMessage(buzz::XmlElement* message, Direction direction) const;
|
| +
|
| + SignalingAddress();
|
| + explicit SignalingAddress(const std::string& jid);
|
| + SignalingAddress(const std::string& jid,
|
| + const std::string& endpoint_id,
|
| + Channel channel);
|
| +
|
| + const std::string& jid() const { return jid_; }
|
| + const std::string& endpoint_id() const { return endpoint_id_; }
|
| + Channel channel() const { return channel_; }
|
| + const std::string& id() const {
|
| + return (channel_ == Channel::LCS) ? endpoint_id_ : jid_;
|
| + }
|
| +
|
| + bool empty() const { return jid_.empty(); }
|
| +
|
| + bool operator==(const SignalingAddress& other) const;
|
| + bool operator!=(const SignalingAddress& other) const;
|
| +
|
| + private:
|
| + // Represents the |to| or |from| field in an IQ stanza.
|
| + std::string jid_;
|
| +
|
| + // Represents the identifier of an endpoint. In LCS, this is the LCS address
|
| + // encoded in a JID like format. In XMPP, it is empty.
|
| + std::string endpoint_id_;
|
| +
|
| + Channel channel_;
|
| +};
|
| +
|
| +} // namespace remoting
|
| +
|
| +#endif // REMOTING_SIGNALING_SIGNALING_ADDRESS_H_
|
|
|