Files
Work/CapServer/hold/SocketHeader.hpp
2024-08-07 09:12:07 -04:00

105 lines
2.2 KiB
C++

#ifndef _CAPSERVER_SOCKET_HEADER_HPP_
#define _CAPSERVER_SOCKET_HEADER_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _SOCKET_SOCKET_HPP_
#include <socket/socket.hpp>
#endif
class SocketHeader
{
public:
typedef enum ContentType{Unknown,ImageJPG};
SocketHeader();
virtual ~SocketHeader();
int getSizeHeader(void)const;
int getVersion(void)const;
void setVersion(int version);
int getContentLength(void)const;
void setContentLength(int contentLength);
ContentType getContentType(void)const;
void setContentType(int contentType);
bool marshall(Socket &socket);
bool unmarshall(Socket &socket);
private:
int mSizeHeader;
int mVersion;
int mContentLength;
int mContentType;
};
inline
SocketHeader::SocketHeader()
: mSizeHeader(sizeof(int)+sizeof(int)+sizeof(int)+sizeof(int)),
mVersion(0), mContentLength(0), mContentType(Unknown)
{
}
inline
SocketHeader::~SocketHeader()
{
}
inline
int SocketHeader::getSizeHeader(void)const
{
return mSizeHeader;
}
inline
int SocketHeader::getVersion(void)const
{
return mVersion;
}
inline
void SocketHeader::setVersion(int version)
{
mVersion=version;
}
inline
int SocketHeader::getContentLength(void)const
{
return mContentLength;
}
inline
void SocketHeader::setContentLength(int contentLength)
{
mContentLength=contentLength;
}
inline
SocketHeader::ContentType SocketHeader::getContentType(void)const
{
return (ContentType)mContentType;
}
inline
void SocketHeader::setContentType(int contentType)
{
mContentType=(ContentType)contentType;
}
inline
bool SocketHeader::marshall(Socket &socket)
{
if(!socket.send((char*)&mSizeHeader,sizeof(int)))return false;
if(!socket.send((char*)&mVersion,sizeof(int)))return false;
if(!socket.send((char*)&mContentLength,sizeof(int)))return false;
if(!socket.send((char*)&mContentType,sizeof(int)))return false;
return true;
}
inline
bool SocketHeader::unmarshall(Socket &socket)
{
if(!socket.receive((char*)&mSizeHeader,sizeof(int)))return false;
if(!socket.receive((char*)&mVersion,sizeof(int)))return false;
if(!socket.receive((char*)&mContentLength,sizeof(int)))return false;
if(!socket.receive((char*)&mContentType,sizeof(int)))return false;
return true;
}
#endif