Пример #1
0
	/*! @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;
	}
Пример #2
0
char * ManageLogger::getBuffer()
{
	char * buf = doGetBuffer();
	if (NULL == buf)
	{
		buf = (char *)malloc(Logger::getBufferLength());
		memset(buf, 0, Logger::getBufferLength());
	}

	return buf;
}