#ifndef __SYS_LOGPI_H__ #define __SYS_LOGPI_H__ /******************************************************************************/ /* */ /* X r d S y s L o g P I . h h */ /* */ /*(c) 2016 by the Board of Trustees of the Leland Stanford, Jr., University */ /*Produced by Andrew Hanushevsky for Stanford University under contract */ /* DE-AC02-76-SFO0515 with the Deprtment of Energy */ /* */ /* This file is part of the XRootD software suite. */ /* */ /* XRootD is free software: you can redistribute it and/or modify it under */ /* the terms of the GNU Lesser General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* XRootD is distributed in the hope that it will be useful, but WITHOUT */ /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */ /* License for more details. */ /* */ /* You should have received a copy of the GNU Lesser General Public License */ /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */ /* COPYING (GPL license). If not, see . */ /* */ /* The copyright holder's institutional names and contributor's names may not */ /* be used to endorse or promote products derived from this software without */ /* specific prior written permission of the institution or contributor. */ /******************************************************************************/ #include #include //----------------------------------------------------------------------------- //! This header file defines the plugin interface used by the logging subsystem. //! The following function is called for each message. A pointer to the //! function is returned by XrdSysLogPInit(); see the definition below. The //! log message function must be thread safe in synchronous mode as any number //! of threads may call it at the same time. In async mode, only one thread //! invokes the function for each message. //! //! @param mtime The time the message was generated. The time value is //! zero when tID is zero (see below). //! @param tID The thread ID that issued the message (Linux -> gettid()). //! If tID is zero then the msg was captured from stderr. //! @param msg Pointer to the null-terminaed message text. //! @param mlen Length of the message text (exclusive of null byte). //----------------------------------------------------------------------------- typedef void (*XrdSysLogPI_t)(struct timeval const &mtime, unsigned long tID, const char *msg, int mlen); //----------------------------------------------------------------------------- //! Initialize and return a pointer to the plugin. This function must reside in //! the plugin shared library as an extern "C" function. The shared library is //! library identified by the "-l @library" command line option. This function //! is called only once during loging initialization. //! //! @param cfgfn -> Configuration filename (nil if none). //! @param argv -> command line arguments after "-+xrdlog". //! @param argc number of command line arguments in argv. //! //! @return Upon success a pointer of type XrdSysLogPI_t which is the function //! that handles log messages (see above). Upon failure, a nil pointer //! should be returned. A sample deinition is shown below. //----------------------------------------------------------------------------- /*! extern "C" XrdSysLogPI_t XrdSysLogPInit(const char *cfgn, char **argv, int argc) { . . . } */ typedef XrdSysLogPI_t (*XrdSysLogPInit_t)(const char *cfgn, char **argv, int argc); //------------------------------------------------------------------------------ /*! Specify the compilation version. Additionally, you *should* declare the xrootd version you used to compile your plug-in. The plugin manager automatically checks for compatability. Declare it as follows: #include "XrdVersion.hh" XrdVERSIONINFO(XrdSysLogPInit,); where is a 1- to 15-character unquoted name identifying your plugin. */ //------------------------------------------------------------------------------ #endif