---
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 ();
```
