Newer
Older
Import / projects / Gameloft / glwebtools / source / glwebtools / glwebtools_serversideevent.cpp
#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;
	}
}