#include <glwebtools/sse/glwebtools_serversideevent.h>
#include <glwebtools/internal/glwebtools_common.h>
#include <glwebtools/internal/glwebtools_macro.h>
#include <sstream>
namespace glwebtools
{
glwebtools::Error ServerSideEvent::SetEventName(const std::string& name)
{
m_eventName = name;
return E_SUCCESS;
}
glwebtools::Error ServerSideEvent::AddData(const std::string& data)
{
if (m_data.IsSet())
{
m_data = m_data.Value() + '\n' + data;
}
else
{
m_data = data;
}
return E_SUCCESS;
}
glwebtools::Error ServerSideEvent::SetLastEventId(const std::string& lastEventId)
{
m_lastEventId = lastEventId;
return E_SUCCESS;
}
glwebtools::Error ServerSideEvent::SetRetry(unsigned int retry)
{
m_retry = retry;
return E_SUCCESS;
}
void ServerSideEvent::Clear()
{
m_eventName.Reset();
m_data.Reset();
m_lastEventId.Reset();
m_retry.Reset();
}
bool ServerSideEvent::IsValid() const
{
return m_data.IsValid();
}
const std::string& ServerSideEvent::GetEventName() const
{
return m_eventName;
}
const std::string& ServerSideEvent::GetData() const
{
return m_data;
}
const std::string& ServerSideEvent::GetLastEventId() const
{
return m_lastEventId;
}
unsigned int ServerSideEvent::GetRetry() const
{
return m_retry;
}
glwebtools::Error ServerSideEvent::ToString(std::string& output) const
{
output.clear();
if (m_eventName.IsSet())
output += "event:"+GetEventName()+'\n';
if (m_data.IsSet())
output += "data:"+GetData()+'\n';
if (m_lastEventId.IsSet())
output += "id:"+GetLastEventId()+'\n';
if (m_retry.IsSet())
{
std::stringstream ss;
ss << GetRetry();
output += "retry:"+ss.str()+'\n';
}
return E_SUCCESS;
}
std::string ServerSideEvent::ToString() const
{
std::string value;
ToString(value);
return value;
}
}