1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright 2020 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.
- #include "remoting/host/ftl_echo_message_listener.h"
- #include "base/logging.h"
- #include "remoting/base/logging.h"
- #include "remoting/proto/ftl/v1/chromoting_message.pb.h"
- #include "remoting/proto/ftl/v1/ftl_messages.pb.h"
- #include "remoting/signaling/signaling_address.h"
- namespace {
- constexpr int kMaxEchoMessageLength = 16;
- }
- namespace remoting {
- FtlEchoMessageListener::FtlEchoMessageListener(std::string host_owner,
- SignalStrategy* signal_strategy)
- : host_owner_(host_owner), signal_strategy_(signal_strategy) {
- DCHECK(signal_strategy_);
- signal_strategy_->AddListener(this);
- }
- FtlEchoMessageListener::~FtlEchoMessageListener() {
- signal_strategy_->RemoveListener(this);
- }
- void FtlEchoMessageListener::OnSignalStrategyStateChange(
- SignalStrategy::State state) {}
- bool FtlEchoMessageListener::OnSignalStrategyIncomingStanza(
- const jingle_xmpp::XmlElement* stanza) {
- return false;
- }
- bool FtlEchoMessageListener::OnSignalStrategyIncomingMessage(
- const ftl::Id& sender_id,
- const std::string& sender_registration_id,
- const ftl::ChromotingMessage& request_message) {
- if (!request_message.has_echo() || !request_message.echo().has_message()) {
- return false;
- }
- // Only respond to echo messages from the machine owner.
- if (sender_id.type() != ftl::IdType_Type_EMAIL ||
- sender_id.id() != host_owner_) {
- LOG(WARNING) << "Dropping echo message from " << sender_id.id();
- return false;
- }
- std::string request_message_payload(request_message.echo().message());
- HOST_LOG << "Handling echo message: '" << request_message_payload << "'";
- std::string response_message_payload =
- request_message_payload.substr(0, kMaxEchoMessageLength);
- ftl::ChromotingMessage response_message;
- response_message.mutable_echo()->set_message(response_message_payload);
- signal_strategy_->SendMessage(SignalingAddress::CreateFtlSignalingAddress(
- sender_id.id(), sender_registration_id),
- response_message);
- return true;
- }
- } // namespace remoting
|