00001 /****************************************************************************** 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00008 00009 #ifndef lgrPduDatabaseEncoderFactory_H_ 00010 #define lgrPduDatabaseEncoderFactory_H_ 00011 00012 #if DtDIS 00013 00014 #include "lgrSqlExporter.h" 00015 #include <map> 00016 #include <vlutil/vlSmartPointers.h> 00017 #include <vlpi/disEnums.h> 00018 00019 namespace MAKLogger 00020 { 00021 00022 class DtLgrPduDatabaseEncoder; 00023 00024 class DT_DLL_SQLEXPORTER DtLgrPduDatabaseEncoderFactory 00025 { 00026 public: 00027 00029 static void registerEncoder(DtPduKind kind,DtLgrPduDatabaseEncoder* encoder); 00030 00034 static const DtLgrPduDatabaseEncoder* getEncoder(DtPduKind kind); 00035 00038 static void resetFactory(); 00039 00040 protected: 00041 00042 static DtLgrPduDatabaseEncoderFactory glocalInstace; 00043 static DtLgrPduDatabaseEncoderFactory* instance(); 00044 00045 DtLgrPduDatabaseEncoderFactory(); 00046 ~DtLgrPduDatabaseEncoderFactory(); 00047 00048 void addEncoder(DtPduKind kind,DtLgrPduDatabaseEncoder* encoder); 00049 const DtLgrPduDatabaseEncoder* lookupEncoder(DtPduKind) const; 00050 00051 typedef DtBoost::shared_ptr<DtLgrPduDatabaseEncoder> DtLgrPduDatabaseEncoderSP; 00052 typedef std::map<DtPduKind,DtLgrPduDatabaseEncoderSP> EncoderMap; 00053 EncoderMap myEncoderMap; 00054 DtLgrPduDatabaseEncoder* myDefaultEncoder; 00055 }; 00056 00057 } 00058 00059 #endif 00060 #endif