| // Copyright (c) 2013 The Chromium OS 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 P2P_COMMON_SERVER_MESSAGE_H__ |
| #define P2P_COMMON_SERVER_MESSAGE_H__ |
| |
| #include <string> |
| |
| namespace p2p { |
| |
| namespace util { |
| |
| // Magic value for the P2PServerMessage "magic" field. |
| const uint64_t kP2PServerMagic = 0x746F68536E6F6F4DULL; // "MoonShot" |
| |
| // Messages passed between the p2p-server and the p2p-http-server. |
| enum P2PServerMessageType { |
| kP2PServerNumConnections = 0, |
| kP2PServerRequestResult, |
| kP2PServerServedSuccessfullyMB, |
| kP2PServerServedInterruptedMB, |
| kP2PServerRangeBeginPercentage, |
| kP2PServerDownloadSpeedKBps, |
| kP2PServerPeakDownloadSpeedKBps, |
| kP2PServerClientCount, |
| kP2PServerPortNumber, |
| |
| // Add new P2PServerMessageTypes above this line. |
| kNumP2PServerMessageTypes |
| }; |
| |
| // The possible values passed for a kP2PServerRequestResult message. |
| enum P2PServerRequestResult { |
| // The resource was found and the response served. |
| kP2PRequestResultResponseSent = 0, |
| |
| // The resource was found but the client disconnected. |
| kP2PRequestResultResponseInterrupted, |
| |
| kP2PRequestResultMalformed, // Request was malformed. |
| kP2PRequestResultNotFound, // Requested resource was not found. |
| kP2PRequestResultIndex, // Requested the '/' or '/index.html' resource. |
| |
| // Add new P2PServerRequestResults above this line. |
| kNumP2PServerRequestResults |
| }; |
| |
| struct P2PServerMessage { |
| uint64_t magic; // The magic value fixed to be "MoonShot". |
| uint32_t message_type; // The P2PServerMessageType. |
| int64_t value; // The value for the provided message type. |
| }; |
| |
| // Returns whether the magic field in the provided |message| is valid. |
| bool ValidP2PServerMessageMagic(const P2PServerMessage& message); |
| |
| // Converts a uint32_t |value| to a P2PServerMessageType if the provided |
| // |value| is in range. Returns whether the conversion was successful. |
| bool ParseP2PServerMessageType(uint32_t value, P2PServerMessageType* result); |
| |
| // Converts a int64_t |value| to a P2PServerRequestResult if the provided |
| // |value| is in range. Returns whether the conversion was successful. |
| bool ParseP2PServerRequestResult(int64_t value, |
| P2PServerRequestResult* result); |
| |
| // Convertion to human-readable string for debugging purposes. |
| std::string ToString(const P2PServerMessage& message); |
| std::string ToString(P2PServerMessageType message_type); |
| std::string ToString(P2PServerRequestResult request_result); |
| |
| } // namespace util |
| |
| } // namespace p2p |
| |
| #endif // P2P_COMMON_SERVER_MESSAGE_H__ |