#ifndef CORE_INTERNAL_OFFLINE_FRAMES_H_ #define CORE_INTERNAL_OFFLINE_FRAMES_H_ #include #include #include "proto/connections/offline_wire_formats.pb.h" #include "platform/byte_array.h" #include "platform/exception.h" #include "platform/port/string.h" #include "platform/ptr.h" #include "proto/connections_enums.pb.h" // Detects the right usage. #include "google/protobuf/message_lite.h" #define proto_ns google3_proto_compat namespace location { namespace nearby { namespace connections { class OfflineFrames { public: static ExceptionOr > fromBytes( ConstPtr offline_frame_bytes); // throws Exception::INVALID_PROTOCOL_BUFFER static V1Frame::FrameType getFrameType(ConstPtr offline_frame); static ConstPtr forConnectionRequest( const std::string& endpoint_id, const std::string& endpoint_name, std::int32_t nonce, const std::vector& mediums); static ConstPtr forConnectionResponse(std::int32_t status); static ConstPtr forDataPayloadTransferFrame( const PayloadTransferFrame::PayloadHeader& header, const PayloadTransferFrame::PayloadChunk& chunk); static ConstPtr forControlPayloadTransferFrame( const PayloadTransferFrame::PayloadHeader& header, const PayloadTransferFrame::ControlMessage& control); static ConstPtr forWifiHotspotUpgradePathAvailableBandwidthUpgradeNegotiationEvent( const std::string& ssid, const std::string& password, std::int32_t port); static ConstPtr forLastWriteToPriorChannelBandwidthUpgradeNegotiationEvent(); static ConstPtr forSafeToClosePriorChannelBandwidthUpgradeNegotiationEvent(); static ConstPtr forClientIntroductionBandwidthUpgradeNegotiationEvent( const std::string& endpoint_id); static ConstPtr forKeepAlive(); static ConnectionRequestFrame::Medium mediumToConnectionRequestMedium( proto::connections::Medium medium); static proto::connections::Medium connectionRequestMediumToMedium( ConnectionRequestFrame::Medium medium); static std::vector connectionRequestMediumsToMediums( const ConnectionRequestFrame& connection_request_frame); }; } // namespace connections } // namespace nearby } // namespace location #endif // CORE_INTERNAL_OFFLINE_FRAMES_H_