greenplumn CMessageTable 源码

  • 2022-08-18
  • 浏览 (386)

greenplumn CMessageTable 代码

文件路径:/src/backend/gporca/libgpos/include/gpos/error/CMessageTable.h

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2008 - 2010, Greenplum, Inc.
//
//	@filename:
//		CMessageTable.h
//
//	@doc:
//		Error message table;
//---------------------------------------------------------------------------
#ifndef GPOS_CMessageTable_H
#define GPOS_CMessageTable_H

#include "gpos/error/CMessage.h"

#define GPOS_MSGTAB_SIZE 4096

namespace gpos
{
//---------------------------------------------------------------------------
//	@class:
//		CMessageTable
//
//	@doc:
//		Maintains error messages for a given locale
//
//---------------------------------------------------------------------------
class CMessageTable
{
	// short hand for message tables
	using MessageTable = CSyncHashtable<CMessage, CException>;

	// short hand for message table accessor
	using MTAccessor = CSyncHashtableAccessByKey<CMessage, CException>;

	// message hashtable
	MessageTable m_hash_table;

public:
	CMessageTable(const CMessageTable &) = delete;

	// ctor
	CMessageTable(CMemoryPool *mp, ULONG size, ELocale locale);

	// lookup message by error/local
	CMessage *LookupMessage(CException exc);

	// insert message
	void AddMessage(CMessage *msg);

	// simple comparison
	BOOL
	operator==(const CMessageTable &mt) const
	{
		return m_locale == mt.m_locale;
	}

	// equality function -- needed for hashtable
	static BOOL
	Equals(const ELocale &locale, const ELocale &other_locale)
	{
		return locale == other_locale;
	}

	// basic hash function
	static ULONG
	HashValue(const ELocale &locale)
	{
		return (ULONG) locale;
	}

	// link object
	SLink m_link;

	// locale
	ELocale m_locale;

	// invalid locale
	static const ELocale m_invalid_locale;

};	// class CMessageTable
}  // namespace gpos

#endif	// !GPOS_CMessageTable_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CAutoExceptionStack 源码

greenplumn CAutoTrace 源码

greenplumn CErrorContext 源码

greenplumn CErrorHandler 源码

greenplumn CErrorHandlerStandard 源码

greenplumn CException 源码

greenplumn CLogger 源码

greenplumn CLoggerStream 源码

greenplumn CLoggerSyslog 源码

greenplumn CMessage 源码

0  赞