\r
namespace caspar { namespace protocol {\r
namespace amcp {\r
-\r
- enum AMCPCommandScheduling\r
- {\r
- Default = 0,\r
- AddToQueue,\r
- ImmediatelyAndClear\r
- };\r
-\r
+ \r
class AMCPCommand\r
{\r
AMCPCommand(const AMCPCommand&);\r
virtual bool Execute() = 0;\r
\r
virtual bool NeedChannel() = 0;\r
- virtual AMCPCommandScheduling GetDefaultScheduling() = 0;\r
virtual int GetMinimumParameters() = 0;\r
\r
void SendReply();\r
\r
virtual void Clear();\r
\r
- AMCPCommandScheduling GetScheduling()\r
- {\r
- return scheduling_ == Default ? GetDefaultScheduling() : scheduling_;\r
- }\r
-\r
virtual std::wstring print() const = 0;\r
\r
- void SetScheduling(AMCPCommandScheduling s){scheduling_ = s;}\r
void SetReplyString(const std::wstring& str){replyString_ = str;}\r
\r
protected:\r
IO::ClientInfoPtr pClientInfo_;\r
std::shared_ptr<core::video_channel> pChannel_;\r
std::vector<spl::shared_ptr<core::video_channel>> channels_;\r
- AMCPCommandScheduling scheduling_;\r
std::wstring replyString_;\r
};\r
\r
typedef std::tr1::shared_ptr<AMCPCommand> AMCPCommandPtr;\r
\r
- template<bool TNeedChannel, AMCPCommandScheduling TScheduling, int TMinParameters>\r
+ template<bool TNeedChannel,int TMinParameters>\r
class AMCPCommandBase : public AMCPCommand\r
{\r
public:\r
}\r
\r
virtual bool NeedChannel(){return TNeedChannel;} \r
- virtual AMCPCommandScheduling GetDefaultScheduling(){return TScheduling;}\r
virtual int GetMinimumParameters(){return TMinParameters;}\r
protected:\r
~AMCPCommandBase(){}\r
\r
namespace amcp {\r
\r
-class ChannelGridCommand : public AMCPCommandBase<false, AddToQueue, 0>\r
+class ChannelGridCommand : public AMCPCommandBase<false, 0>\r
{\r
std::wstring print() const { return L"ChannelGridCommand";}\r
bool DoExecute();\r
};\r
\r
-class DiagnosticsCommand : public AMCPCommandBase<false, AddToQueue, 0>\r
+class DiagnosticsCommand : public AMCPCommandBase<false, 0>\r
{\r
std::wstring print() const { return L"DiagnosticsCommand";}\r
bool DoExecute();\r
};\r
\r
-class CallCommand : public AMCPCommandBase<true, AddToQueue, 1>\r
+class CallCommand : public AMCPCommandBase<true, 1>\r
{\r
std::wstring print() const { return L"CallCommand";}\r
bool DoExecute();\r
};\r
\r
-class MixerCommand : public AMCPCommandBase<true, AddToQueue, 1>\r
+class MixerCommand : public AMCPCommandBase<true, 1>\r
{\r
std::wstring print() const { return L"MixerCommand";}\r
bool DoExecute();\r
};\r
\r
-class AddCommand : public AMCPCommandBase<true, AddToQueue, 1>\r
+class AddCommand : public AMCPCommandBase<true, 1>\r
{\r
std::wstring print() const { return L"AddCommand";}\r
bool DoExecute();\r
};\r
\r
-class RemoveCommand : public AMCPCommandBase<true, AddToQueue, 0>\r
+class RemoveCommand : public AMCPCommandBase<true, 0>\r
{\r
std::wstring print() const { return L"RemoveCommand";}\r
bool DoExecute();\r
};\r
\r
-class SwapCommand : public AMCPCommandBase<true, AddToQueue, 1>\r
+class SwapCommand : public AMCPCommandBase<true, 1>\r
{\r
std::wstring print() const { return L"SwapCommand";}\r
bool DoExecute();\r
};\r
\r
-class LoadCommand : public AMCPCommandBase<true, AddToQueue, 1>\r
+class LoadCommand : public AMCPCommandBase<true, 1>\r
{\r
std::wstring print() const { return L"LoadCommand";}\r
bool DoExecute();\r
};\r
\r
-class LoadbgCommand : public AMCPCommandBase<true, AddToQueue, 1>\r
+class LoadbgCommand : public AMCPCommandBase<true, 1>\r
{\r
std::wstring print() const { return L"LoadbgCommand";}\r
bool DoExecute();\r
};\r
\r
-class PlayCommand: public AMCPCommandBase<true, AddToQueue, 0>\r
+class PlayCommand: public AMCPCommandBase<true, 0>\r
{\r
std::wstring print() const { return L"PlayCommand";}\r
bool DoExecute();\r
};\r
\r
-class PauseCommand: public AMCPCommandBase<true, AddToQueue, 0>\r
+class PauseCommand: public AMCPCommandBase<true, 0>\r
{\r
std::wstring print() const { return L"PauseCommand";}\r
bool DoExecute();\r
};\r
\r
-class StopCommand : public AMCPCommandBase<true, AddToQueue, 0>\r
+class StopCommand : public AMCPCommandBase<true, 0>\r
{\r
std::wstring print() const { return L"StopCommand";}\r
bool DoExecute();\r
};\r
\r
-class ClearCommand : public AMCPCommandBase<true, ImmediatelyAndClear, 0>\r
+class ClearCommand : public AMCPCommandBase<true, 0>\r
{\r
std::wstring print() const { return L"ClearCommand";}\r
bool DoExecute();\r
};\r
\r
-class PrintCommand : public AMCPCommandBase<true, AddToQueue, 0>\r
+class PrintCommand : public AMCPCommandBase<true, 0>\r
{\r
std::wstring print() const { return L"PrintCommand";}\r
bool DoExecute();\r
};\r
\r
-class LogCommand : public AMCPCommandBase<false, AddToQueue, 0>\r
+class LogCommand : public AMCPCommandBase<false, 0>\r
{\r
std::wstring print() const { return L"LogCommand";}\r
bool DoExecute();\r
};\r
\r
-class CGCommand : public AMCPCommandBase<true, AddToQueue, 1>\r
+class CGCommand : public AMCPCommandBase<true, 1>\r
{\r
std::wstring print() const { return L"CGCommand";}\r
bool DoExecute();\r
bool DoExecuteInfo();\r
};\r
\r
-class DataCommand : public AMCPCommandBase<false, AddToQueue, 1>\r
+class DataCommand : public AMCPCommandBase<false, 1>\r
{\r
std::wstring print() const { return L"DataCommand";}\r
bool DoExecute();\r
bool DoExecuteList();\r
};\r
\r
-class ClsCommand : public AMCPCommandBase<false, AddToQueue, 0>\r
+class ClsCommand : public AMCPCommandBase<false, 0>\r
{\r
std::wstring print() const { return L"ClsCommand";}\r
bool DoExecute();\r
};\r
\r
-class TlsCommand : public AMCPCommandBase<false, AddToQueue, 0>\r
+class TlsCommand : public AMCPCommandBase<false, 0>\r
{\r
std::wstring print() const { return L"TlsCommand";}\r
bool DoExecute();\r
};\r
\r
-class CinfCommand : public AMCPCommandBase<false, AddToQueue, 1>\r
+class CinfCommand : public AMCPCommandBase<false, 1>\r
{\r
std::wstring print() const { return L"CinfCommand";}\r
bool DoExecute();\r
};\r
\r
-class InfoCommand : public AMCPCommandBase<false, AddToQueue, 0>\r
+class InfoCommand : public AMCPCommandBase<false, 0>\r
{\r
public:\r
std::wstring print() const { return L"InfoCommand";}\r
const std::vector<spl::shared_ptr<core::video_channel>>& channels_;\r
};\r
\r
-class VersionCommand : public AMCPCommandBase<false, AddToQueue, 0>\r
+class VersionCommand : public AMCPCommandBase<false, 0>\r
{\r
std::wstring print() const { return L"VersionCommand";}\r
bool DoExecute();\r
};\r
\r
-class ByeCommand : public AMCPCommandBase<false, AddToQueue, 0>\r
+class ByeCommand : public AMCPCommandBase<false, 0>\r
{\r
std::wstring print() const { return L"ByeCommand";}\r
bool DoExecute();\r
};\r
\r
-class SetCommand : public AMCPCommandBase<true, AddToQueue, 2>\r
+class SetCommand : public AMCPCommandBase<true, 2>\r
{\r
std::wstring print() const { return L"SetCommand";}\r
bool DoExecute();\r