From b242d3b57efe6926300c649c882095bf5dcdf5df Mon Sep 17 00:00:00 2001 From: ahodgkinson Date: Thu, 22 Feb 2007 16:06:28 +0000 Subject: [PATCH] Fixed build issues. git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@1040 0109f412-320b-0410-ab79-c3e0c5ffbbe6 --- ftk/src/ftk.h | 34 ++- ftk/src/ftkhttp.cpp | 725 ++++++++++++++++++++++++++++++++++---------- ftk/src/ftknet.cpp | 20 +- 3 files changed, 597 insertions(+), 182 deletions(-) diff --git a/ftk/src/ftk.h b/ftk/src/ftk.h index 5a9dad9..1a8cd88 100644 --- a/ftk/src/ftk.h +++ b/ftk/src/ftk.h @@ -614,6 +614,7 @@ #define FLM_HTTP_STATUS_CONTINUE 100 #define FLM_HTTP_STATUS_SWITCHING_PROTOCOLS 101 + #define FLM_HTTP_STATUS_PROCESSING 102 #define FLM_HTTP_STATUS_OK 200 #define FLM_HTTP_STATUS_CREATED 201 #define FLM_HTTP_STATUS_ACCEPTED 202 @@ -621,6 +622,7 @@ #define FLM_HTTP_STATUS_NO_CONTENT 204 #define FLM_HTTP_STATUS_RESET_CONTENT 205 #define FLM_HTTP_STATUS_PARTIAL_CONTENT 206 + #define FLM_HTTP_STATUS_MULTI_STATUS 207 #define FLM_HTTP_STATUS_MULTIPLE_CHOICES 300 #define FLM_HTTP_STATUS_MOVED_PERMANENTLY 301 #define FLM_HTTP_STATUS_FOUND 302 @@ -652,6 +654,9 @@ #define FLM_HTTP_STATUS_SERVICE_UNAVAILABLE 503 #define FLM_HTTP_STATUS_GATEWAY_TIMEOUT 504 #define FLM_HTTP_STATUS_VERSION_NOT_SUPPORTED 505 + + const char * FLMAPI FlmGetHTTPStatusString( + FLMUINT uiStatusCode); /**************************************************************************** Desc: Return code functions and macros @@ -1551,7 +1556,7 @@ RCODE FLMAPI FlmReadFully( IF_IStream * pIStream, F_DynaBuf * pDynaBuf); - + RCODE FLMAPI FlmReadLine( IF_IStream * pIStream, F_DynaBuf * pBuffer); @@ -1676,8 +1681,6 @@ FLMUINT uiCount, FLMUINT * puiBytesRead) = 0; - virtual RCODE FLMAPI closeStream( void) = 0; - virtual void FLMAPI setIOTimeout( FLMUINT uiSeconds) = 0; }; @@ -1703,8 +1706,6 @@ FLMUINT * puiBytesWritten = NULL) = 0; virtual const char * FLMAPI getPeerCertificateText( void) = 0; - - virtual RCODE FLMAPI closeStream( void) = 0; }; /**************************************************************************** @@ -1720,12 +1721,18 @@ flminterface IF_HTTPHeader : public F_Object { + virtual RCODE FLMAPI readRequestHeader( + IF_IStream * pIStream) = 0; + virtual RCODE FLMAPI readResponseHeader( IF_IStream * pIStream) = 0; virtual RCODE FLMAPI writeRequestHeader( IF_OStream * pOStream) = 0; + virtual RCODE FLMAPI writeResponseHeader( + IF_OStream * pOStream) = 0; + virtual RCODE FLMAPI getHeaderValue( const char * pszTag, F_DynaBuf * pBuffer) = 0; @@ -1744,9 +1751,14 @@ virtual FLMUINT FLMAPI getStatusCode( void) = 0; - virtual RCODE FLMAPI setRequestURL( - const char * pszRequestURL) = 0; + virtual RCODE FLMAPI setStatusCode( + FLMUINT uiStatusCode) = 0; + + virtual RCODE FLMAPI setRequestURI( + const char * pszRequestURI) = 0; + const char * FLMAPI getRequestURI( void); + virtual RCODE FLMAPI setMethod( eHttpMethod httpMethod) = 0; @@ -3502,8 +3514,12 @@ Desc: String constants ****************************************************************************/ - #define FLM_HTTP_CONTENT_LENGTH ((const char *) "Content-Length") - #define FLM_HTTP_USER_AGENT ((const char *) "User-Agent") + #define FLM_HTTP_CONTENT_LENGTH_TAG ((const char *) "Content-Length") + #define FLM_HTTP_CONTENT_TYPE_TAG ((const char *) "Content-Type") + + #define FLM_HTTP_USER_AGENT_STR ((const char *) "User-Agent") + + #define FLM_MIME_TYPE_TEXT_XML_STR ((const char *) "text/xml") /**************************************************************************** Desc: Endian macros diff --git a/ftk/src/ftkhttp.cpp b/ftk/src/ftkhttp.cpp index 42d2a5a..d5dabbc 100644 --- a/ftk/src/ftkhttp.cpp +++ b/ftk/src/ftkhttp.cpp @@ -76,7 +76,7 @@ public: F_HTTPHeader() { m_pResultSet = NULL; - m_pszRequestURL = NULL; + m_pszRequestURI = NULL; resetHeader(); } @@ -85,12 +85,18 @@ public: resetHeader(); } + RCODE FLMAPI readRequestHeader( + IF_IStream * pIStream); + RCODE FLMAPI readResponseHeader( IF_IStream * pIStream); RCODE FLMAPI writeRequestHeader( IF_OStream * pOStream); + RCODE FLMAPI writeResponseHeader( + IF_OStream * pOStream); + RCODE FLMAPI getHeaderValue( const char * pszTag, F_DynaBuf * pBuffer); @@ -114,8 +120,13 @@ public: FLMUINT FLMAPI getStatusCode( void); - RCODE FLMAPI setRequestURL( - const char * pszRequestURL); + RCODE FLMAPI setStatusCode( + FLMUINT uiStatusCode); + + RCODE FLMAPI setRequestURI( + const char * pszRequestURI); + + const char * FLMAPI getRequestURI( void); void FLMAPI resetHeader( void); @@ -123,11 +134,17 @@ private: RCODE allocResultSet( void); + RCODE readHeaderTaggedValues( + IF_IStream * pIStream); + + RCODE writeHeaderTaggedValues( + IF_OStream * pOStream); + IF_BTreeResultSet * m_pResultSet; FLMUINT m_uiStatusCode; FLMUINT m_uiContentLength; eHttpMethod m_httpMethod; - char * m_pszRequestURL; + char * m_pszRequestURI; char m_szHttpVersion[ 32]; }; @@ -179,24 +196,16 @@ Exit: /**************************************************************************** Desc: ****************************************************************************/ -RCODE FLMAPI F_HTTPHeader::readResponseHeader( +RCODE F_HTTPHeader::readHeaderTaggedValues( IF_IStream * pIStream) { RCODE rc = NE_FLM_OK; F_DynaBuf lineBuf; F_DynaBuf tokenBuf; - FLMUINT uiLineCount = 0; const char * pszLine; const char * pszTagEnd; const char * pszTagValue; - resetHeader(); - - if( RC_BAD( rc = allocResultSet())) - { - goto Exit; - } - for( ;;) { if( RC_BAD( rc = FlmReadLine( pIStream, &lineBuf))) @@ -210,12 +219,6 @@ RCODE FLMAPI F_HTTPHeader::readResponseHeader( } else if( (pszTagEnd = f_strstr( pszLine, ":")) != NULL) { - if( !uiLineCount) - { - rc = RC_SET_AND_ASSERT( NE_FLM_BAD_HTTP_HEADER); - goto Exit; - } - pszTagValue = pszTagEnd + 1; while( *pszTagValue && *pszTagValue == ASCII_SPACE) @@ -231,88 +234,6 @@ RCODE FLMAPI F_HTTPHeader::readResponseHeader( } } else - { - const char * pszTmp = pszLine; - - // Verify the preamble - - if( f_strncmp( pszTmp, "HTTP", 4) != 0) - { - rc = RC_SET_AND_ASSERT( NE_FLM_BAD_HTTP_HEADER); - goto Exit; - } - pszTmp += 4; - - if( *pszTmp != ASCII_SLASH) - { - rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); - goto Exit; - } - pszTmp++; - - // Get the protocol version - - tokenBuf.truncateData( 0); - while( *pszTmp && *pszTmp != ASCII_SPACE) - { - if( RC_BAD( rc = tokenBuf.appendByte( *pszTmp))) - { - goto Exit; - } - - pszTmp++; - } - - tokenBuf.appendByte( 0); - - // Skip the space - - if( *pszTmp) - { - pszTmp++; - } - - // Get the status code - - tokenBuf.truncateData( 0); - while( *pszTmp && *pszTmp != ASCII_SPACE) - { - if( RC_BAD( rc = tokenBuf.appendByte( *pszTmp))) - { - goto Exit; - } - - pszTmp++; - } - - tokenBuf.appendByte( 0); - m_uiStatusCode = f_atoud( (const char *)tokenBuf.getBufferPtr()); - - // Skip the space - - if( *pszTmp) - { - pszTmp++; - } - - // Get the status message - - tokenBuf.truncateData( 0); - while( *pszTmp) - { - if( RC_BAD( rc = tokenBuf.appendByte( *pszTmp))) - { - goto Exit; - } - - pszTmp++; - } - - tokenBuf.appendByte( 0); - uiLineCount++; - } - - if( !uiLineCount) { rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); goto Exit; @@ -324,6 +245,238 @@ Exit: return( rc); } +/**************************************************************************** +Desc: +****************************************************************************/ +RCODE FLMAPI F_HTTPHeader::readResponseHeader( + IF_IStream * pIStream) +{ + RCODE rc = NE_FLM_OK; + F_DynaBuf lineBuf; + F_DynaBuf tokenBuf; + const char * pszTmp; + + resetHeader(); + + if( RC_BAD( rc = allocResultSet())) + { + goto Exit; + } + + // Read the preamble + + if( RC_BAD( rc = FlmReadLine( pIStream, &lineBuf))) + { + goto Exit; + } + + pszTmp = (const char *)lineBuf.getBufferPtr(); + + // Verify the preamble + + if( f_strncmp( pszTmp, "HTTP", 4) != 0) + { + rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); + goto Exit; + } + pszTmp += 4; + + if( *pszTmp != ASCII_SLASH) + { + rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); + goto Exit; + } + pszTmp++; + + // Get the protocol version + + tokenBuf.truncateData( 0); + while( *pszTmp && *pszTmp != ASCII_SPACE) + { + if( RC_BAD( rc = tokenBuf.appendByte( *pszTmp))) + { + goto Exit; + } + + pszTmp++; + } + + tokenBuf.appendByte( 0); + + // Skip the space + + if( *pszTmp) + { + pszTmp++; + } + + // Get the status code + + tokenBuf.truncateData( 0); + while( *pszTmp && *pszTmp != ASCII_SPACE) + { + if( RC_BAD( rc = tokenBuf.appendByte( *pszTmp))) + { + goto Exit; + } + + pszTmp++; + } + + tokenBuf.appendByte( 0); + m_uiStatusCode = f_atoud( (const char *)tokenBuf.getBufferPtr()); + + // Skip the space + + if( *pszTmp) + { + pszTmp++; + } + + // Get the status message + + tokenBuf.truncateData( 0); + while( *pszTmp) + { + if( RC_BAD( rc = tokenBuf.appendByte( *pszTmp))) + { + goto Exit; + } + + pszTmp++; + } + + tokenBuf.appendByte( 0); + + // Read the tag values + + if( RC_BAD( rc = readHeaderTaggedValues( pIStream))) + { + goto Exit; + } + +Exit: + + return( rc); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +RCODE FLMAPI F_HTTPHeader::readRequestHeader( + IF_IStream * pIStream) +{ + RCODE rc = NE_FLM_OK; + F_DynaBuf lineBuf; + F_DynaBuf tokenBuf; + const char * pszTmp; + + resetHeader(); + + if( RC_BAD( rc = allocResultSet())) + { + goto Exit; + } + + // Read the preamble + + if( RC_BAD( rc = FlmReadLine( pIStream, &lineBuf))) + { + goto Exit; + } + + pszTmp = (const char *)lineBuf.getBufferPtr(); + + + if( f_strncmp( pszTmp, "GET ", 4) == 0) + { + m_httpMethod = METHOD_GET; + pszTmp += 4; + } + else if( f_strncmp( pszTmp, "PUT ", 4) == 0) + { + m_httpMethod = METHOD_PUT; + pszTmp += 4; + } + else if( f_strncmp( pszTmp, "POST ", 5) == 0) + { + m_httpMethod = METHOD_POST; + pszTmp += 5; + } + else + { + rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); + goto Exit; + } + + // Get the request URI + + tokenBuf.truncateData( 0); + while( *pszTmp && *pszTmp != ASCII_SPACE) + { + if( RC_BAD( rc = tokenBuf.appendByte( *pszTmp))) + { + goto Exit; + } + + pszTmp++; + } + + tokenBuf.appendByte( 0); + + if( RC_BAD( rc = setRequestURI( (const char *)tokenBuf.getBufferPtr()))) + { + goto Exit; + } + + // Skip the space + + if( *pszTmp) + { + pszTmp++; + } + + // Get the protocol version + + if( f_strncmp( pszTmp, "HTTP", 4) != 0) + { + rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); + goto Exit; + } + pszTmp += 4; + + if( *pszTmp != ASCII_SLASH) + { + rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); + goto Exit; + } + pszTmp++; + + tokenBuf.truncateData( 0); + while( *pszTmp && *pszTmp != ASCII_SPACE) + { + if( RC_BAD( rc = tokenBuf.appendByte( *pszTmp))) + { + goto Exit; + } + + pszTmp++; + } + + tokenBuf.appendByte( 0); + + // Read the tag values + + if( RC_BAD( rc = readHeaderTaggedValues( pIStream))) + { + goto Exit; + } + +Exit: + + return( rc); +} + /**************************************************************************** Desc: ****************************************************************************/ @@ -468,6 +621,16 @@ FLMUINT FLMAPI F_HTTPHeader::getStatusCode( void) return( m_uiStatusCode); } +/**************************************************************************** +Desc: +****************************************************************************/ +RCODE FLMAPI F_HTTPHeader::setStatusCode( + FLMUINT uiStatusCode) +{ + m_uiStatusCode = uiStatusCode; + return( NE_FLM_OK); +} + /**************************************************************************** Desc: ****************************************************************************/ @@ -497,9 +660,9 @@ void FLMAPI F_HTTPHeader::resetHeader( void) m_pResultSet = NULL; } - if( m_pszRequestURL) + if( m_pszRequestURI) { - f_free( &m_pszRequestURL); + f_free( &m_pszRequestURI); } m_uiStatusCode = 0; @@ -511,23 +674,23 @@ void FLMAPI F_HTTPHeader::resetHeader( void) /**************************************************************************** Desc: ****************************************************************************/ -RCODE FLMAPI F_HTTPHeader::setRequestURL( - const char * pszRequestURL) +RCODE FLMAPI F_HTTPHeader::setRequestURI( + const char * pszRequestURI) { RCODE rc = NE_FLM_OK; - FLMUINT uiStrLen = f_strlen( pszRequestURL); + FLMUINT uiStrLen = f_strlen( pszRequestURI); - if( m_pszRequestURL) + if( m_pszRequestURI) { - f_free( &m_pszRequestURL); + f_free( &m_pszRequestURI); } - if( RC_BAD( rc = f_alloc( uiStrLen + 1, &m_pszRequestURL))) + if( RC_BAD( rc = f_alloc( uiStrLen + 1, &m_pszRequestURI))) { goto Exit; } - f_memcpy( m_pszRequestURL, pszRequestURL, uiStrLen + 1); + f_memcpy( m_pszRequestURI, pszRequestURI, uiStrLen + 1); Exit: @@ -541,13 +704,8 @@ RCODE FLMAPI F_HTTPHeader::writeRequestHeader( IF_OStream * pOStream) { RCODE rc = NE_FLM_OK; - FLMBYTE ucTag[ FLM_MAX_KEY_SIZE]; - FLMBYTE ucValue[ 512]; - FLMUINT uiTagLength; - FLMUINT uiValueLength; - FLMUINT uiFieldCount; - if( !m_pszRequestURL) + if( !m_pszRequestURI) { rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); goto Exit; @@ -570,58 +728,14 @@ RCODE FLMAPI F_HTTPHeader::writeRequestHeader( break; } - f_printf( pOStream, "%s ", m_pszRequestURL); + f_printf( pOStream, "%s ", m_pszRequestURI); f_printf( pOStream, "HTTP/%s\r\n", m_szHttpVersion); // Output the header fields - if( m_pResultSet) + if( RC_BAD( rc = writeHeaderTaggedValues( pOStream))) { - uiTagLength = 0; - uiFieldCount = 0; - - for( ;;) - { - if( !uiFieldCount) - { - rc = m_pResultSet->getFirst( ucTag, sizeof( ucTag), - &uiTagLength, NULL, 0, &uiValueLength); - } - else - { - rc = m_pResultSet->getNext( ucTag, sizeof( ucTag), - &uiTagLength, NULL, 0, &uiValueLength); - } - - if( RC_BAD( rc)) - { - if( rc == NE_FLM_EOF_HIT) - { - rc = NE_FLM_OK; - break; - } - - goto Exit; - } - - if( uiValueLength >= sizeof( ucValue)) - { - rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); - goto Exit; - } - - if( RC_BAD( rc = m_pResultSet->getCurrent( ucTag, uiTagLength, - ucValue, uiValueLength, NULL))) - { - goto Exit; - } - - ucTag[ uiTagLength] = 0; - ucValue[ uiValueLength] = 0; - - f_printf( pOStream, "%s: %s\r\n", ucTag, ucValue); - uiFieldCount++; - } + goto Exit; } // Terminate @@ -633,3 +747,288 @@ Exit: return( rc); } +/**************************************************************************** +Desc: +****************************************************************************/ +RCODE FLMAPI F_HTTPHeader::writeResponseHeader( + IF_OStream * pOStream) +{ + RCODE rc = NE_FLM_OK; + + // Output the preamble and status + + f_printf( pOStream, "HTTP/%s ", m_szHttpVersion); + f_printf( pOStream, "%u ", (unsigned)m_uiStatusCode); + f_printf( pOStream, "%s\r\n", FlmGetHTTPStatusString( m_uiStatusCode)); + + // Output the header fields + + if( RC_BAD( rc = writeHeaderTaggedValues( pOStream))) + { + goto Exit; + } + + // Terminate + + f_printf( pOStream, "\r\n"); + +Exit: + + return( rc); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +RCODE F_HTTPHeader::writeHeaderTaggedValues( + IF_OStream * pOStream) +{ + RCODE rc = NE_FLM_OK; + FLMBYTE ucTag[ FLM_MAX_KEY_SIZE]; + FLMBYTE ucValue[ 512]; + FLMUINT uiTagLength; + FLMUINT uiValueLength; + FLMUINT uiFieldCount; + + if( !m_pResultSet) + { + goto Exit; + } + + uiTagLength = 0; + uiFieldCount = 0; + + for( ;;) + { + if( !uiFieldCount) + { + rc = m_pResultSet->getFirst( ucTag, sizeof( ucTag), + &uiTagLength, NULL, 0, &uiValueLength); + } + else + { + rc = m_pResultSet->getNext( ucTag, sizeof( ucTag), + &uiTagLength, NULL, 0, &uiValueLength); + } + + if( RC_BAD( rc)) + { + if( rc == NE_FLM_EOF_HIT) + { + rc = NE_FLM_OK; + break; + } + + goto Exit; + } + + if( uiValueLength >= sizeof( ucValue)) + { + rc = RC_SET( NE_FLM_BAD_HTTP_HEADER); + goto Exit; + } + + if( RC_BAD( rc = m_pResultSet->getCurrent( ucTag, uiTagLength, + ucValue, uiValueLength, NULL))) + { + goto Exit; + } + + ucTag[ uiTagLength] = 0; + ucValue[ uiValueLength] = 0; + + f_printf( pOStream, "%s: %s\r\n", ucTag, ucValue); + uiFieldCount++; + } + +Exit: + + return( rc); +} + +/**************************************************************************** +Desc: +****************************************************************************/ +const char * FLMAPI FlmGetHTTPStatusString( + FLMUINT uiStatusCode) +{ + const char * pszStatusCode; + + switch( uiStatusCode) + { + case FLM_HTTP_STATUS_CONTINUE: + pszStatusCode = "Continue"; + break; + + case FLM_HTTP_STATUS_SWITCHING_PROTOCOLS: + pszStatusCode = "Switching Protocols"; + break; + + case FLM_HTTP_STATUS_PROCESSING: + pszStatusCode = "Processing"; + break; + + case FLM_HTTP_STATUS_OK: + pszStatusCode = "OK"; + break; + + case FLM_HTTP_STATUS_CREATED: + pszStatusCode = "Created"; + break; + + case FLM_HTTP_STATUS_ACCEPTED: + pszStatusCode = "Accepted"; + break; + + case FLM_HTTP_STATUS_NON_AUTH_INFO: + pszStatusCode = "Non-Authoritative Information"; + break; + + case FLM_HTTP_STATUS_NO_CONTENT: + pszStatusCode = "No Content"; + break; + + case FLM_HTTP_STATUS_RESET_CONTENT: + pszStatusCode = "Reset Content"; + break; + + case FLM_HTTP_STATUS_PARTIAL_CONTENT: + pszStatusCode = "Partial Content"; + break; + + case FLM_HTTP_STATUS_MULTI_STATUS: + pszStatusCode = "Multi-Status"; + break; + + case FLM_HTTP_STATUS_MULTIPLE_CHOICES: + pszStatusCode = "Multiple Choices"; + break; + + case FLM_HTTP_STATUS_MOVED_PERMANENTLY: + pszStatusCode = "Moved Permanently"; + break; + + case FLM_HTTP_STATUS_FOUND: + pszStatusCode = "Found"; + break; + + case FLM_HTTP_STATUS_SEE_OTHER: + pszStatusCode = "See Other"; + break; + + case FLM_HTTP_STATUS_NOT_MODIFIED: + pszStatusCode = "Not Modified"; + break; + + case FLM_HTTP_STATUS_USE_PROXY: + pszStatusCode = "Use Proxy"; + break; + + case FLM_HTTP_STATUS_TEMPORARY_REDIRECT: + pszStatusCode = "Temporary Redirect"; + break; + + case FLM_HTTP_STATUS_BAD_REQUEST: + pszStatusCode = "Bad Request"; + break; + + case FLM_HTTP_STATUS_UNAUTHORIZED: + pszStatusCode = "Unauthorized"; + break; + + case FLM_HTTP_STATUS_PAYMENT_REQUIRED: + pszStatusCode = "Payment Required"; + break; + + case FLM_HTTP_STATUS_FORBIDDEN: + pszStatusCode = "Forbidden"; + break; + + case FLM_HTTP_STATUS_NOT_FOUND: + pszStatusCode = "Not Found"; + break; + + case FLM_HTTP_STATUS_METHOD_NOT_ALLOWED: + pszStatusCode = "Method Not Allowed"; + break; + + case FLM_HTTP_STATUS_NOT_ACCEPTABLE: + pszStatusCode = "Not Acceptable"; + break; + + case FLM_HTTP_STATUS_PROXY_AUTH_REQUIRED: + pszStatusCode = "Proxy Authentication Required"; + break; + + case FLM_HTTP_STATUS_REQUEST_TIMEOUT: + pszStatusCode = "Request Timeout"; + break; + + case FLM_HTTP_STATUS_CONFLICT: + pszStatusCode = "Conflict"; + break; + + case FLM_HTTP_STATUS_GONE: + pszStatusCode = "Gone"; + break; + + case FLM_HTTP_STATUS_LENGTH_REQUIRED: + pszStatusCode = "Length Required"; + break; + + case FLM_HTTP_STATUS_PRECONDITION_FAILED: + pszStatusCode = "Precondition Failed"; + break; + + case FLM_HTTP_STATUS_ENTITY_TOO_LARGE: + pszStatusCode = "Request Entity Too Large"; + break; + + case FLM_HTTP_STATUS_URI_TOO_LONG: + pszStatusCode = "Request-URI Too Long"; + break; + + case FLM_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: + pszStatusCode = "Unsupported Media Type"; + break; + + case FLM_HTTP_STATUS_RANGE_NOT_SATISFIABLE: + pszStatusCode = "Requested Range Not Satisfiable"; + break; + + case FLM_HTTP_STATUS_EXPECTATION_FAILED: + pszStatusCode = "Expectation Failed"; + break; + + case FLM_HTTP_STATUS_INTERNAL_SERVER_ERROR: + pszStatusCode = "Internal Server Error"; + break; + + case FLM_HTTP_STATUS_NOT_IMPLEMENTED: + pszStatusCode = "Not Implemented"; + break; + + case FLM_HTTP_STATUS_BAD_GATEWAY: + pszStatusCode = "Bad Gateway"; + break; + + case FLM_HTTP_STATUS_SERVICE_UNAVAILABLE: + pszStatusCode = "Service Unavailable"; + break; + + case FLM_HTTP_STATUS_GATEWAY_TIMEOUT: + pszStatusCode = "Gateway Timeout"; + break; + + case FLM_HTTP_STATUS_VERSION_NOT_SUPPORTED: + pszStatusCode = "HTTP Version Not Supported"; + break; + + default: + pszStatusCode = "Undefined Error"; + break; + } + + return( pszStatusCode); +} + diff --git a/ftk/src/ftknet.cpp b/ftk/src/ftknet.cpp index bf1dea2..4acbab6 100644 --- a/ftk/src/ftknet.cpp +++ b/ftk/src/ftknet.cpp @@ -83,13 +83,13 @@ public: virtual ~F_TCPIOStream( void); - RCODE openStream( + RCODE FLMAPI openStream( const char * pucHostAddress, FLMUINT uiPort, FLMUINT uiFlags, FLMUINT uiConnectTimeout); - RCODE openStream( + RCODE FLMAPI openStream( int iSocket, FLMUINT uiFlags); @@ -103,48 +103,48 @@ public: FLMUINT uiBytesToWrite, FLMUINT * puiBytesWritten); - FINLINE RCODE socketPeekWrite( + FINLINE RCODE FLMAPI socketPeekWrite( FLMUINT uiTimeOut) { return( f_socketPeek( m_iSocket, uiTimeOut, FALSE)); } - FINLINE RCODE f_socketPeekRead( + FINLINE RCODE FLMAPI f_socketPeekRead( FLMUINT uiTimeOut) { return( f_socketPeek( m_iSocket, uiTimeOut, TRUE)); }; - FINLINE const char * getLocalHostName( void) + FINLINE const char * FLMAPI getLocalHostName( void) { getLocalInfo(); return( (const char *)m_pszName); }; - FINLINE const char * getLocalHostAddress( void) + FINLINE const char * FLMAPI getLocalHostAddress( void) { getLocalInfo(); return( (const char *)m_pszIp); }; - FINLINE const char * getPeerHostName( void) + FINLINE const char * FLMAPI getPeerHostName( void) { getRemoteInfo(); return( (const char *)m_pszPeerName); }; - FINLINE const char * getPeerHostAddress( void) + FINLINE const char * FLMAPI getPeerHostAddress( void) { getRemoteInfo(); return( (const char *)m_pszPeerIp); }; - RCODE readNoWait( + RCODE FLMAPI readNoWait( void * pvBuffer, FLMUINT uiCount, FLMUINT * puiReadRead); - RCODE readAll( + RCODE FLMAPI readAll( void * pvBuffer, FLMUINT uiCount, FLMUINT * puiBytesRead);