# GTXserver / GTXClient Documentation

## What is the GTXserver ?

The GTXserver is the name of a package that any Isatis user can find in the distribution to write C, C++, .Net, Java or S-Plus applications to access the Isatis file system without using Isatis.

The package can be used by programmers to import or export data from the Isatis file system within their applications. Programmers can also use this application to write their own calculators reading and writing data in Isatis filesystem.

The package comes with the GTXserver executable and a library (called GTXClient) needed to link the application. If the built application is redistributed, it should not include the GTXserver executable and use the one included with each Isatis distribution. If the client doesn't have Isatis, he can download the GTXserver executable from Geovariances Web Site: http://www.geovariances.com. However, there is no problem to redistribute the gtxclient dynamic library if used.

Even if you need to know a little in programming, it is important to note that examples are provided to help you. Furthermore one of these examples allows you to dump the content of one Isatis variable to a plain text file in a chosen format and could be useful to export results.

## How does it work ?

It works in a client/server mode, which means that a server also named GTXserver will run somewhere over your network and will dialog with your client application (linked against the GTXClient library) to access a selected Isatis file system.

## C/C++ library

The C/C++ library is provided both as a shared library and as a static library. The shared one should be preferred (see Dynamic Linking Library (DLL) under Windows) as it allows easier maintenance of the client programs. The library contains both the C functions and the C++ classes in the same library file but you should only use one of those "bindings" for one program.

Here is a link to GTXClient C API documentation.

And the same now for GTXClient C++ API documentation.

## Java package

Starting with version 8.0.0, the java package has a dependency over the native C/C++ library that will be loaded automatically when staring using the package. This brings some functionalities that were only available in the C binding (like registry access and tracing functionalities). You may consult the Release Notes if you were already using the Java version before. To access the documentation of the Java package, you should now read the GTXClient C++ API documentation as the API is very similar.

The Java package is named com.geovariances.gtxclient, is stored inside lib/gtxclient.jar and it needs the GTXClient shared library (.dll/.so).

Some Java examples are provided in the client/java folder. To run them, you need to define a java.library.path property pointing on the folder where the GTXClient shared library (.dll/.so) can be found. For example to run client/java/dump, use a syntax like this:

    cd client/java
    java -Djava.library.path=../../lib/winnt/shared -cp .;../../lib/gtxclient.jar dump    [for Windows]
    java -Djava.library.path=../../lib/linux/shared -cp .:../../lib/gtxclient.jar dump    [for UNIX]

## .NET API

Starting with version 8.0.0, the .NET package is made as a C# binding over the native C/C++ library. The native library will be loaded automatically when starting using the C#/.NET dll. This brings some functionalities that were only available in the C binding (like registry access and tracing functionalities). It also removes the dependency over J# Runtime. You may consult the Release Notes if you were already using the Java version before. To access the documentation of the .NET package, you should now read the GTXClient C++ API documentation as the API is very similar.

The .Net namespace is com.geovariances.gtxclient, and the corresponding DLL is lib/winnt/shared/GTXClient.Net.dll and it needs the GTXClient dll.

Some C# examples are provided in the client/CSharp folder. To run them, you need to have the managed and unmanaged library in the PATH. For example to run client/CSharp/dump, use a syntax like this:

    cd client/CSharp
    set PATH=../../lib/winnt/shared;%PATH%
    dump

(or copy the dlls in the client/CSharp folder).

## Dynamic Linking Library (DLL) under Windows

Libraries are available as shared and static versions. Shared libraries are stored in directory lib/<platform>/shared and static libraries are stored in directory lib/<platform>/static. When compiling a C or C++ program with the C/C++ GTXClient includes/library, by default the include files assume that you want to use the static library. If you want to use the dll version you need to compile your C/C++ sources with the define symbol GTX_DLL.

For Java and .Net bindings, the DLL is always used of course so you don't have to specify any particular option to use the DLL.

## Requirements

GTXClient C/C++ library is provided both as source and library. The library (can be found in lib/{arch}/[shared/static] should work as is on

- Windows 2000, XP, Vista (32 or 64 bits) with Visual Studio 2005 SP1.
- Linux Redhat Enterprise 3 (32 or 64 bits) or more with gcc 3.2 or more.
- Solaris 10 (64 bits) with Sun Workshop Compiler 6 Update 2 or more.

However, to suit your need, you may consider recompiling from the sources located in `src/gtxclient` with any other compiler.

GTXClient Java package has been made with Java 6 Update 2. You may consider recompiling it from the sources located in `src/gtxclient_java` but as it uses enums, it would still need Java 5 or more.

GTXClient .NET package has been made with Visual Studio 2005 SP1. You may consider recompiling it from the sources located in `src/gtxclient_csharp`.

## Release Notes

Release Notes can be found either here or on Geovariances Website for a more up to date version.

.