#ifndef REMOTING_PROTO_MESSAGING_SERVICE_H_
#define REMOTING_PROTO_MESSAGING_SERVICE_H_
#include <optional>
#include <string>
#include <variant>
#include "base/time/time.h"
#include "remoting/proto/service_common.h"
namespace remoting::internal {
struct ChannelOpenStruct {
std::optional<base::TimeDelta> channel_lifetime;
std::optional<base::TimeDelta> inactivity_timeout;
};
struct ChannelActiveStruct {};
struct IqStanzaStruct {
IqStanzaStruct();
IqStanzaStruct(const IqStanzaStruct&);
IqStanzaStruct& operator=(const IqStanzaStruct&);
~IqStanzaStruct();
};
struct PingPongStruct {
enum class Type {
TYPE_UNSPECIFIED = 0,
PING = 1,
PONG = 2,
};
Type type;
std::string rally_id;
int32_t current_count;
int32_t exchange_count;
std::string payload;
};
struct BurstStruct {
int32_t index;
int32_t burst_count;
std::string payload;
};
struct EncryptedStruct {
std::string payload;
std::string unencrypted_payload;
};
struct SimpleStruct {
std::string payload;
};
struct ShareSessionTokenStruct {
std::string messaging_authz_token;
};
struct SystemTestStruct {
SystemTestStruct();
SystemTestStruct(const SystemTestStruct&);
SystemTestStruct& operator=(const SystemTestStruct&);
~SystemTestStruct();
std::variant<BurstStruct,
EncryptedStruct,
PingPongStruct,
SimpleStruct,
ShareSessionTokenStruct>
test_message;
};
struct PeerMessageStruct {
PeerMessageStruct();
PeerMessageStruct(const PeerMessageStruct&);
PeerMessageStruct& operator=(const PeerMessageStruct&);
~PeerMessageStruct();
std::string message_id;
std::variant<IqStanzaStruct, SystemTestStruct> payload;
};
struct HostSendMessageRequestStruct {
std::string messaging_authz_token;
PeerMessageStruct peer_message;
};
struct MachineInfo {
std::string version;
OperatingSystemInfoStruct operating_system_info;
};
struct HostSendMessageResponseStruct {};
struct HostOpenChannelRequestStruct {
std::string username;
std::string host_public_key;
MachineInfo machine_info;
};
struct HostOpenChannelResponseStruct {
HostOpenChannelResponseStruct();
~HostOpenChannelResponseStruct();
std::variant<ChannelOpenStruct, ChannelActiveStruct, PeerMessageStruct>
message;
};
}
#endif