⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sblog.cpp

📁 sloedgy open sip stack source code
💻 CPP
📖 第 1 页 / 共 4 页
字号:
 {
   if ((pThis == NULL) || (alistener == NULL))
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI *) pThis; 
   SBlog *me = (SBlog *)temp->impl_;
   SBlogEventCallbackData info = { alistener, userdata };
   SBlogEventCallbackData *p = me->UnregisterEventListener(&info);
   if (p) delete p;
 
   return VXIlog_RESULT_SUCCESS;
 } 
 
 
 VXIlogResult SBlogRegisterContentListener(SBlogInterface *pThis,
 					  SBlogContentListener* alistener,
 					  void* userdata)
 {
   if ((pThis == NULL) || (alistener == NULL))
     return VXIlog_RESULT_INVALID_ARGUMENT;
   
   myAPI *temp = (myAPI *) pThis; 
   SBlog *me = (SBlog *)temp->impl_;
   SBlogContentCallbackData *info = new SBlogContentCallbackData;
   if (info == NULL) {
     me->Error(SBLOG_ERR_OUT_OF_MEMORY);
     return VXIlog_RESULT_OUT_OF_MEMORY;
   }
  
   info->callback = alistener;
   info->userdata = userdata;
   return ( me->RegisterContentListener(info));
 } 
 
 
 VXIlogResult SBlogUnregisterContentListener(SBlogInterface *pThis,
 					    SBlogContentListener* alistener,
 					    void*  userdata)
 {
   if ((pThis == NULL) || (alistener == NULL))
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI *) pThis; 
   SBlog *me = (SBlog *)temp->impl_;
   SBlogContentCallbackData info = { alistener, userdata };
   SBlogContentCallbackData *p = me->UnregisterContentListener(&info);
   if (p) delete p;
 
   return VXIlog_RESULT_SUCCESS;
 } 
 
 /**********************************************************************
 */
 
 SBLOG_API VXIint32 SBlogGetVersion(void)
 {
   return VXI_CURRENT_VERSION;
 }
 
 
 SBLOG_API const VXIchar* SBlogGetImplementationName(void)
 {
   static const VXIchar IMPLEMENTATION_NAME[] = COMPANY_DOMAIN L".SBlog";
   return IMPLEMENTATION_NAME;
 }
 
 
 SBLOG_API VXIbool SBlogDiagnosticIsEnabled(VXIlogInterface * pThis,
                                            VXIunsigned tagID)
 {
   if (pThis == NULL)
     return FALSE;
 
   myAPI *temp = (myAPI *) pThis;
   SBlog *me = (SBlog *) temp->impl_;
 
   if (!me->DiagnosticIsEnabled(tagID)) return FALSE;
   return TRUE;
 }
 
 
 SBLOG_API VXIlogResult SBlogDiagnostic(VXIlogInterface*        pThis,
                                        VXIunsigned             tagID,
                                        const VXIchar*          subtag,
                                        const VXIchar*          format,
                                        ...)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI *) pThis;
   SBlog *me = (SBlog *) temp->impl_;
   va_list args;
   va_start(args, format);
 
   VXIlogResult ret = me->DiagnosticLog(tagID, subtag, format, args);
   va_end(args);
 
   return ret;
 }
 
 SBLOG_API VXIlogResult SBlogVDiagnostic(VXIlogInterface*        pThis,
                                         VXIunsigned             tagID,
                                         const VXIchar*          subtag,
                                         const VXIchar*          format,
                                         va_list                 vargs)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI *)pThis;
   SBlog *me = (SBlog *)temp->impl_;
   VXIlogResult ret = me->DiagnosticLog(tagID, subtag, format, vargs);
 
   return ret;
 }
 
 
 SBLOG_API VXIlogResult SBlogEvent(VXIlogInterface*        pThis,
                                   VXIunsigned             eventID,
                                   const VXIchar*          format,
                                   ...)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI*)pThis;
   SBlog *me = (SBlog *)temp->impl_;
   va_list args;
   va_start(args, format);
   VXIlogResult ret = me->EventLog(eventID, format, args);
   va_end(args);
 
   return ret;
 }
 
 
 SBLOG_API VXIlogResult SBlogVEvent(VXIlogInterface*        pThis,
                                    VXIunsigned             eventID,
                                    const VXIchar*          format,
                                    va_list                 vargs)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI*)pThis;
   SBlog *me = (SBlog *)temp->impl_;
   VXIlogResult ret = me->EventLog(eventID, format, vargs);
 
   return ret;
 }
 
 
 SBLOG_API VXIlogResult SBlogEventVector(VXIlogInterface*        pThis,
 					VXIunsigned             eventID,
 					const VXIVector*        keys,
 					const VXIVector*        values)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI*)pThis;
   SBlog *me = (SBlog *)temp->impl_;
   VXIlogResult ret = me->EventLog(eventID, keys, values);
 
   return ret;
 }
 
 
 SBLOG_API VXIlogResult SBlogError(VXIlogInterface*        pThis,
                                   const VXIchar*          moduleName,
                                   VXIunsigned             errorID,
                                   const VXIchar*          format,
                                   ...)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI*)pThis;
   SBlog *me = (SBlog *)temp->impl_;
   va_list args;
   va_start(args, format);
   VXIlogResult ret = me->ErrorLog(moduleName, errorID, format, args);
   va_end(args);
 
   return ret;
 }
 
 
 SBLOG_API VXIlogResult SBlogVError(VXIlogInterface*        pThis,
                                    const VXIchar*          moduleName,
                                    VXIunsigned             errorID,
                                    const VXIchar*          format,
                                    va_list                 vargs)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI*)pThis;
   SBlog *me = (SBlog *)temp->impl_;
   VXIlogResult ret = me->ErrorLog(moduleName, errorID, format, vargs);
 
   return ret;
 }
 
 
 SBLOG_API VXIlogResult SBlogContentOpen(VXIlogInterface*  pThis,
 					const VXIchar*    moduleName,
 					const VXIchar*    contentType,
 					VXIString**       logKey,
 					VXIString**       logValue,
 					VXIlogStream**    stream)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI*)pThis;
   SBlog *me = (SBlog *)temp->impl_;
   VXIlogResult ret = me->ContentOpen(moduleName, contentType,
 				     logKey, logValue, stream);
 
   return ret;
 }
 
 
 SBLOG_API VXIlogResult SBlogContentClose(VXIlogInterface* pThis,
 					 VXIlogStream**   stream)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI*)pThis;
   SBlog *me = (SBlog *)temp->impl_;
   VXIlogResult ret = me->ContentClose(stream);
 
   return ret;
 }
 
 
 SBLOG_API VXIlogResult SBlogContentWrite(VXIlogInterface* pThis,
 					 const VXIbyte*   buffer,
 					 VXIulong         buflen,
 					 VXIulong*        nwritten,
 					 VXIlogStream*    stream)
 {
   if (pThis == NULL)
     return VXIlog_RESULT_INVALID_ARGUMENT;
 
   myAPI *temp = (myAPI*)pThis;
   SBlog *me = (SBlog *)temp->impl_;
   VXIlogResult ret = me->ContentWrite(buffer, buflen, nwritten, stream);
 
   return ret;
 }
 
 
 // -----1=0-------2=0-------3=0-------4=0-------5=0-------6=0-------7=0-------8
 
 /**
  * Global platform initialization of SBlog
  *
  * @result VXIlogResult 0 on success
  */
 SBLOG_API VXIlogResult SBlogInit(void)
 {
   if (gblInitialized == true) {
     SBlog::GlobalError(SBLOG_ERR_ALREADY_INITIALIZED);
     return VXIlog_RESULT_FATAL_ERROR;
   }
 
   gblInitialized = true;
   return VXIlog_RESULT_SUCCESS;
 }
 
 
 /**
  * Global platform shutdown of Log
  *
  * @result VXIlogResult 0 on success
  */
 SBLOG_API VXIlogResult SBlogShutDown(void)
 {
   if (gblInitialized == false) {
     SBlog::GlobalError(SBLOG_ERR_NOT_INITIALIZED);
     return VXIlog_RESULT_FATAL_ERROR;
   }
 
   gblInitialized = false;
   return VXIlog_RESULT_SUCCESS;
 }
 
 
 /**
  * Create a new log service handle
  *
  * @result VXIlogResult 0 on success 
  */
 SBLOG_API VXIlogResult SBlogCreateResource(VXIlogInterface **log)
 {
   if (gblInitialized == false) {
     SBlog::GlobalError(SBLOG_ERR_NOT_INITIALIZED);
     return VXIlog_RESULT_FATAL_ERROR;
   }
 
   if (log == NULL) {
     SBlog::GlobalError(309, L"SBlog: SBlogCreateResource() requires a "
 		       L"non-NULL log interface pointer", NULL);
     return VXIlog_RESULT_INVALID_ARGUMENT;
   }
 
   myAPI *temp = new myAPI;
   if (temp == NULL) {
     SBlog::GlobalError(SBLOG_ERR_OUT_OF_MEMORY);
     return VXIlog_RESULT_OUT_OF_MEMORY;
   }
   memset (temp, 0, sizeof (myAPI));
   
   SBlog *me = new SBlog(&temp->intf);
   if (me == NULL) {
     delete temp;
     SBlog::GlobalError(SBLOG_ERR_OUT_OF_MEMORY);
     return VXIlog_RESULT_OUT_OF_MEMORY;
   }
   
   // Initialize the VXIlogInterface function pointers
   temp->intf.vxilog.GetVersion            = SBlogGetVersion;
   temp->intf.vxilog.GetImplementationName = SBlogGetImplementationName;
   temp->intf.vxilog.Error                 = SBlogError;
   temp->intf.vxilog.VError                = SBlogVError;
   temp->intf.vxilog.Diagnostic            = SBlogDiagnostic;
   temp->intf.vxilog.VDiagnostic           = SBlogVDiagnostic;
   temp->intf.vxilog.DiagnosticIsEnabled   = SBlogDiagnosticIsEnabled;
   temp->intf.vxilog.Event                 = SBlogEvent;
   temp->intf.vxilog.VEvent                = SBlogVEvent;
   temp->intf.vxilog.EventVector           = SBlogEventVector;
   temp->intf.vxilog.ContentOpen           = SBlogContentOpen;
   temp->intf.vxilog.ContentClose          = SBlogContentClose;
   temp->intf.vxilog.ContentWrite          = SBlogContentWrite;
   
   // Initialize the SBlogInterface functions
   temp->intf.RegisterErrorListener = SBlogRegisterErrorListener;
   temp->intf.UnregisterErrorListener = SBlogUnregisterErrorListener;
   temp->intf.RegisterDiagnosticListener = SBlogRegisterDiagnosticListener;
   temp->intf.UnregisterDiagnosticListener = SBlogUnregisterDiagnosticListener;
   temp->intf.RegisterEventListener = SBlogRegisterEventListener;
   temp->intf.UnregisterEventListener = SBlogUnregisterEventListener;
   temp->intf.RegisterContentListener = SBlogRegisterContentListener;
   temp->intf.UnregisterContentListener = SBlogUnregisterContentListener;
   temp->intf.ControlDiagnosticTag = SBlogControlDiagnosticTag;
   temp->impl_ = (void*)me;
 
   // Return the object
   *log = &temp->intf.vxilog;
   return VXIlog_RESULT_SUCCESS;
 }
 
 
 /**
  * Destroy the interface and free internal resources
  *
  * @result VXIlogResult 0 on success 
  */
 SBLOG_API VXIlogResult SBlogDestroyResource(VXIlogInterface **log)
 {
   if (gblInitialized == false) {
     SBlog::GlobalError(SBLOG_ERR_NOT_INITIALIZED);
     return VXIlog_RESULT_FATAL_ERROR;
   }
 
   if ((log == NULL) || (*log == NULL)) {
     SBlog::GlobalError(310, L"SBlog: SBlogDestroyResource() requires a "
 		       L"non-NULL log interface pointer", NULL);
     return VXIlog_RESULT_INVALID_ARGUMENT;
   }
 
   // Delete the object
   myAPI *temp = (myAPI *) *log;
   SBlog *me = (SBlog *)temp->impl_;
   if (me) delete me;
   if (temp) delete temp;
   *log = NULL;
 
   return VXIlog_RESULT_SUCCESS;
 }
 

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -