--- title: "C Plug-In Tap Point Interface" slug: "c-plug-in-tap-point-interface" updated: 2020-04-16T21:24:48Z published: 2020-04-16T21:24:48Z canonical: "onpremises.webtrends.help/c-plug-in-tap-point-interface" --- > ## Documentation Index > Fetch the complete documentation index at: https://onpremises.webtrends.help/llms.txt > Use this file to discover all available pages before exploring further. # C Plug-In Tap Point Interface Your Webtrends C plug-in should use the following functions: - `XltInitialize` - `XltOpenSession` - `XltTranslate` - `XLTTranslateVisitorHit` (optional) - `XLTTranslateVisitorSession` (optional) - `XltCloseSession` - `XltTerminate` When Webtrends Analysis Engines or the Event Database Loader loads the plug-in, it attempts to get function pointers for each of the five required functions. If any function pointer is not available, the plug-in is not loaded. The following pseudo-code shows the order in which the plug-in’s functions are used. ``` Load the plug-in; Get function pointers to the functions; XltInitialize (); XltOpenSession (); For each record { XltTranslate (); XltTranslateVisitorHit (); XltTranslateVisitorSession (); } XltCloseSession (); XltTerminate (); ``` The following sections describe each of these functions. ## Analysis Tap Points The following table shows the functions called at each analysis tap point. | Analysis Tap Point | Function Called | Description | | --- | --- | --- | | Initialize | `xltInitialize` | Occurs early in profile analysis before any hits are processed. | | Open Session | `xltOpenSession` | Occurs early in profile analysis before any hits are processed. | | Translate | `xltTranslate` | Occurs when Webtrends is ready to process hits. | | Translate Visitor Hit | `xltTranslateVisitorHit` | Occurs after Webtrends processes the entire hit. | | Translate Visitor Session | `xltTranslateVisitorSession` | Occurs after Webtrends determines the visitor session is complete. | | Close Session | `xltCloseSession` | Occurs after Webtrends processes all hits for the profile. | | Terminate | `xltTerminate` | Occurs after Webtrends all hits are processed for the profile | ## XltInitialize The `XltInitialize` function initializes your plug-in. If plug-in initialization succeeds, the function returns `XLTOK` and sets the output parameters. When the output parameters are set, the plug-in is successfully initialized and ready to open sessions. If `XltInitialize` returns `XLTERR`, the plug-in is not used until this function returns `XLTOK`. #### Parameters The following output parameters are set: **`lpdwMajorVersion`** Specifies the major version of the plug-in. In the version 1.5, 1 is the major version. **`lpdwMinorVersion`** Specifies the minor version of the plug-in. In the version 1.5, 5 is the minor version. **`lpdwPluginType`** Specifies whether the plug-in works with log file records or with Web Data Warehouse records. Set this parameter to `CybRecAdapterType` if you want to use the plug-in for log file data. Set this parameter to `WebHouseAdapterType` if you want to use the plug-in with Webtrends Web Data Warehouse data. For example, `*lpdwPluginType = CybRecAdapterType;` **`lplpszName`** Specifies the name of the plug-in. #### Function Specification ``` DLL_EXPORT INT XltInitialize ( LPCSTR lpszProgramPath, // In LPDWORD lpdwMajorVersion, // Out LPDWORD lpdwMinorVersion, // Out LPDWORD lpdwPluginType, // Out LPCSTR *lplpszName); // Out ``` ## XltOpenSession After the `XltInitialize` function returns `XLTOK`, Webtrends calls the `XltOpenSession` function. #### Inputs **`lpfnResolveName`** Callback function that your plug-in uses to request data from Webtrends. Store `lpfnResolveName` globally so it can be used in the `XltTranslate` function. For more information, see the “ResolveName” section in the article "C Plug-In Callback Interface." **`lpfnApplyTranslation`** Callback function that changes the data requested. Store `lpfnApplyTranslation` globally so it can be used in the `XltTranslate` function. For more information, see the “ApplyTranslation" section of the article "C Plug-In Callback Interface." **`lpszSessionDetails`** Contains `AppGetValue` and `AppSetValue` callback functions which are used internally by Webtrends. Your plug-in does not need to use these functions. For more information, see the comments in the `translate.h` file. #### Returns **`XLT_SESSIONID_T`** Specifies the plug-in session context handle that should be passed in with every subsequent function API call. The plug-in should save the application's context handle, along with any other session-based details it requires in a structure/object and return a pointer to that structure back to the caller. A value of `NULL` indicates failure. #### Function Specification ``` DLL_EXPORT XLT_SESSIONID_T XltOpenSession ( lpfnResolveName_T lpfnResolveName, lpfnApplyTranslation_T lpfnApplyTranslation, LP_SESION_INFO_T lpszSessionDetails); ``` ## XltTranslate After a successful return from the `XltOpenSession` function, Webtrends calls the `XltTranslate` function. This function allows the plug-in to translate a log file record. #### Inputs **`tsSessionID`** Specifies the session ID that was set in the `xltOpenSession` function. **`lpDetails`** Details about the log file record. To be passed to the `ResolveName()` and `ApplyTranslation()` callbacks into the application. #### Returns **`XLTOK`** Indicates that the translation was successful. **`XLTERR`** Indicates that the translation was not successful. **`XLTFILTER`** Indicates that the plug-in requested this hit should be excluded from analysis. #### Function Specification ``` DLL_EXPORT int XltTranslate ( XLT_SESSIONID_T tsSessionID, void lpDetails); ``` ## XltTranslateVisitorHit Webtrends calls the `xltTranslateVisitorHit` function after `xltTranslate` completes successfully. This function allows the plug-in to translate a log file record after the hit is processed. This function is not available for Basic Analysis plug-ins and is optional for Standard Analysis and Visitor Data Mart plug-ins. #### Inputs **`tsSessionID`** Specifies the session ID that was set in the `xltOpenSession` function. **`lpDetails`** Details about the log file record. To be passed to the `lpfnResolveName_T()` and `lpfnApplyTranslation_T()` callbacks into the application. **`nHitSessionId`** Unique ID for the visitor session this hit belongs to. This is valid until the session is completed and through the `VisitorSession` tap point (`XltTranslateVisitorSession`) **`lpszSession`** Cookie visitor ID if it is available. It may not be available for all session hits. It will be identical to `XltTranslateVisitorSession::lpszVisitorId`. **`fNewVisitorSession`** Indicates that it is the first hit of a new visitor session. #### Returns **`XLTOK`** Indicates that the translation was successful. **`XLTERR`** Indicates that the translation not successful. #### Function Specification ``` DLL_EXPORT int XltTranslateVisitorHit XLT_SESSIONID_T tsSessionID, void lpDetails, unsigned nHitSessionId, const char lpszSessionId, bool fNewVisitorSession); ``` ## XltTranslateVisitorSession After the `XltTranslateVisitorHit()` function has completed successfully, Webtrends calls the `xltTranslateVisitorSession` function. This function allows the plug-in to translate visitor session information. This function is not available for Visitor Data Mart plug-ins. #### Input **`tsSessionID`** The session ID that was set in the `xltOpenSession` function. **`lpDetails`** Details about the visitor session record to be passed to `ResolveName_T()` and `ApplySessionTranslation_T()` callbacks into Webtrends. **`nHitSessionId`** Specifies the unique ID for the visitor session. This corresponds to the `nHitSessionId` used in `XltTranslateVisitorHit()`. **`lpszVisitorId`** Persistent unique ID for the visitor. #### Returns **`XLTOK`** Indicates that the translation was successful. **`XLTERR`** Indicates that the translation not successful. #### Function Specification ``` DLL_EXPORT int XltTranslateVisitorSession ( XLT_SESSIONID_T tsSessionID, void lpDetails, unsigned nHitSessionId, const char lpszVisitorId); ``` ## XltCloseSession Webtrends calls this function at the completion of the plug-in’s session. After this function is called, there are no more calls to `XltTranslate`, `xltTranslateVisitorHit`, or `xltTranslateVisitorSession` for this plug-in session ID. #### Input **`tsSessionID`** Specifies the session ID that was set in the `xltOpenSession` function. #### Returns **`void`** Returns a value of void to close the session. #### Function Specification ``` DLL_EXPORT void XltCloseSession ( XLT_SESSIONID_T tsSessionID); ``` ## XltTerminate The `xltTerminate` function stops the plug-in. The plug-in should close any open sessions, clean up any resources used, and be prepared for a call to `XltInitialize`. #### Function Specification ``` DLL_EXPORT void XltTerminate (); ```