#ifndef _CAPSERVER_SOCKET_HEADER_HPP_ #define _CAPSERVER_SOCKET_HEADER_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _SOCKET_SOCKET_HPP_ #include #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