mirror of
https://github.com/badaix/snapcast.git
synced 2025-06-03 11:21:41 +02:00
Change message_type from enum to enum class
This commit is contained in:
parent
aba2d96aba
commit
5b8cd7ecd5
3 changed files with 60 additions and 15 deletions
|
@ -1,6 +1,6 @@
|
|||
/***
|
||||
This file is part of snapcast
|
||||
Copyright (C) 2014-2020 Johannes Pohl
|
||||
Copyright (C) 2014-2021 Johannes Pohl
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -68,21 +68,21 @@ static std::unique_ptr<BaseMessage> createMessage(const BaseMessage& base_messag
|
|||
std::unique_ptr<BaseMessage> result;
|
||||
switch (base_message.type)
|
||||
{
|
||||
case kCodecHeader:
|
||||
case message_type::kCodecHeader:
|
||||
return createMessage<CodecHeader>(base_message, buffer);
|
||||
case kHello:
|
||||
case message_type::kHello:
|
||||
return createMessage<Hello>(base_message, buffer);
|
||||
case kServerSettings:
|
||||
case message_type::kServerSettings:
|
||||
return createMessage<ServerSettings>(base_message, buffer);
|
||||
case kStreamTags:
|
||||
case message_type::kStreamTags:
|
||||
return createMessage<StreamTags>(base_message, buffer);
|
||||
case kTime:
|
||||
case message_type::kTime:
|
||||
return createMessage<Time>(base_message, buffer);
|
||||
case kWireChunk:
|
||||
case message_type::kWireChunk:
|
||||
// this is kind of cheated to safe the convertion from WireChunk to PcmChunk
|
||||
// the user of the factory must be aware that a PcmChunk will be created
|
||||
return createMessage<PcmChunk>(base_message, buffer);
|
||||
case kClientInfo:
|
||||
case message_type::kClientInfo:
|
||||
return createMessage<ClientInfo>(base_message, buffer);
|
||||
default:
|
||||
return nullptr;
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
#ifndef WINDOWS
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
/*
|
||||
template<typename CharT, typename TraitsT = std::char_traits<CharT> >
|
||||
|
@ -52,7 +52,7 @@ struct membuf : public std::basic_streambuf<char>
|
|||
};
|
||||
|
||||
|
||||
enum message_type
|
||||
enum class message_type : uint16_t
|
||||
{
|
||||
kBase = 0,
|
||||
kCodecHeader = 1,
|
||||
|
@ -67,6 +67,39 @@ enum message_type
|
|||
kLast = kClientInfo
|
||||
};
|
||||
|
||||
static std::ostream& operator<<(std::ostream& os, const message_type& msg_type)
|
||||
{
|
||||
switch (msg_type)
|
||||
{
|
||||
case message_type::kBase:
|
||||
os << "Base";
|
||||
break;
|
||||
case message_type::kCodecHeader:
|
||||
os << "CodecHeader";
|
||||
break;
|
||||
case message_type::kWireChunk:
|
||||
os << "WireChunk";
|
||||
break;
|
||||
case message_type::kServerSettings:
|
||||
os << "ServerSettings";
|
||||
break;
|
||||
case message_type::kTime:
|
||||
os << "Time";
|
||||
break;
|
||||
case message_type::kHello:
|
||||
os << "Hello";
|
||||
break;
|
||||
case message_type::kStreamTags:
|
||||
os << "StreamTags";
|
||||
break;
|
||||
case message_type::kClientInfo:
|
||||
os << "ClientInfo";
|
||||
break;
|
||||
default:
|
||||
os << "Unknown";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
struct tv
|
||||
{
|
||||
|
@ -121,11 +154,11 @@ using message_ptr = std::shared_ptr<msg::BaseMessage>;
|
|||
|
||||
struct BaseMessage
|
||||
{
|
||||
BaseMessage() : type(kBase), id(0), refersTo(0)
|
||||
BaseMessage() : type(message_type::kBase), id(0), refersTo(0)
|
||||
{
|
||||
}
|
||||
|
||||
BaseMessage(message_type type_) : type(static_cast<uint16_t>(type_)), id(0), refersTo(0)
|
||||
BaseMessage(message_type type_) : type(type_), id(0), refersTo(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -182,7 +215,7 @@ struct BaseMessage
|
|||
return 3 * sizeof(uint16_t) + 2 * sizeof(tv) + sizeof(uint32_t);
|
||||
};
|
||||
|
||||
uint16_t type;
|
||||
message_type type;
|
||||
mutable uint16_t id;
|
||||
uint16_t refersTo;
|
||||
tv received;
|
||||
|
@ -207,6 +240,12 @@ protected:
|
|||
stream.write(reinterpret_cast<const char*>(&v), sizeof(uint16_t));
|
||||
}
|
||||
|
||||
void writeVal(std::ostream& stream, const message_type& val) const
|
||||
{
|
||||
uint16_t v = static_cast<uint16_t>(SWAP_16(val));
|
||||
stream.write(reinterpret_cast<const char*>(&v), sizeof(uint16_t));
|
||||
}
|
||||
|
||||
void writeVal(std::ostream& stream, const int16_t& val) const
|
||||
{
|
||||
uint16_t v = SWAP_16(val);
|
||||
|
@ -257,6 +296,12 @@ protected:
|
|||
val = SWAP_16(val);
|
||||
}
|
||||
|
||||
void readVal(std::istream& stream, message_type& val) const
|
||||
{
|
||||
stream.read(reinterpret_cast<char*>(&val), sizeof(uint16_t));
|
||||
val = static_cast<message_type>(SWAP_16(val));
|
||||
}
|
||||
|
||||
void readVal(std::istream& stream, int16_t& val) const
|
||||
{
|
||||
stream.read(reinterpret_cast<char*>(&val), sizeof(int16_t));
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/***
|
||||
This file is part of snapcast
|
||||
Copyright (C) 2014-2020 Johannes Pohl
|
||||
Copyright (C) 2014-2021 Johannes Pohl
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -55,7 +55,7 @@ class shared_const_buffer
|
|||
{
|
||||
std::vector<char> data;
|
||||
bool is_pcm_chunk;
|
||||
uint16_t type;
|
||||
message_type type;
|
||||
chronos::time_point_clk rec_time;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue