105 lines
2.2 KiB
C++
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 |