/*! @detail * Retrieve multiple options. * @param size - number of options to set * @param option - array of options with type provided * @return 0 - success * -1 - fail during 1st option * -2 - fail during 2nd option * : */ int nGetOption(int size, attr *opts) { int i, v1, v2, v3; bool flagOn; for( i=0; i<size; ++i ) { flagOn = (0!=curVAL(0)); //flagOn==false only when 0 switch( opts[i].type ) { case FILE_nBLK: if( m_fd && doGetNBlock(&flagOn) ) m_nBLK = flagOn; curVAL(0) = m_nBLK; break; case TIMEOUT_MS: if( m_fd && doGetTout(&v1, &v2) ) { m_readTOms = v1; m_writeTOms = v2; } curVAL(0) = m_readTOms; curVAL(1) = m_writeTOms; break; case KEEPALIVE_MS: if( m_fd && doGetKeepALive(&v1, &v2, &v3) ) { m_KAL1stMS = v1; m_KALsubMS = v2; m_KALcount = v3; } curVAL(0) = m_KAL1stMS; curVAL(1) = m_KALsubMS; curVAL(2) = m_KALcount; break; case LINGER_MS: if( m_fd && doGetLinger(&flagOn, &v1) ) { m_linger = flagOn; m_lingerMS = v1; } curVAL(0) = m_linger; curVAL(1) = m_lingerMS; break; case BUFFER_B: if( m_fd && doGetBuffer(&v1, &v2) ) { m_rcvBufSize = v1; m_sndBufSize = v2; } curVAL(0) = m_rcvBufSize; curVAL(1) = m_sndBufSize; break; case REUSE_ADDR: if( m_fd && doGetResue(&flagOn) ) m_reuseAddr = flagOn; curVAL(0) = m_reuseAddr; break; default: ERROR("Unknown socket option %d\n", opts[i].type); break; } } return 0; }
char * ManageLogger::getBuffer() { char * buf = doGetBuffer(); if (NULL == buf) { buf = (char *)malloc(Logger::getBufferLength()); memset(buf, 0, Logger::getBufferLength()); } return buf; }