Cryptlex Documentation
  • Welcome to Cryptlex!
  • Getting Started
    • Overview
    • Licensing Models
  • License Management
    • License Templates
    • Implementing License Models
    • Creating Licenses
    • License Subscriptions
    • Custom License Fields
    • Meter Attributes
    • Suspending Licenses
    • Revoking Licenses
    • Maintenance Policies
  • Feature Management
    • Overview
    • Features and Entitlement Sets
    • License Feature Entitlements
    • Accessing Feature Entitlements
    • Use Cases
  • User Management
    • Roles
    • Creating Users
    • Authenticating Users
    • Organizations
    • Resellers
    • Customer Portal
    • Reseller Portal
    • Google SSO
    • SAML SSO
  • Release Management
    • Overview
    • Creating Releases
    • Distributing Releases
  • Node Locked Licenses
    • Overview
    • Using LexActivator
      • Using LexActivator with C, C++ and Objective C
      • Using LexActivator with C#
      • Using LexActivator with VB.NET
      • Using LexActivator with Java
      • Using LexActivator with Delphi
      • Using LexActivator with Python
      • Using LexActivator with Go
      • Using LexActivator with Node.js
      • Using LexActivator with Ruby
      • Using LexActivator with Android
      • Using LexActivator with iOS
      • Using LexActivator with Flutter
    • Using Web API
    • Offline Activations
    • Proxies and Firewall
  • Floating Licenses
    • Overview
    • Hosted Floating License Server
    • On-Premise Floating Licenses
      • LexFloatServer
      • Using LexFloatClient
        • Using LexFloatClient with C, C++ & Objective C
        • Using LexFloatClient with C#
        • Using LexFloatClient with VB.NET
        • Using LexFloatClient with Java
        • Using LexFloatClient with Delphi
        • Using LexFloatClient with Python
        • Using LexFloatClient with Node.js
        • Using LexFloatClient with Go
        • Using LexFloatClient with Android
        • Using LexFloatClient with iOS
      • Offline Floating License
  • Named User Licenses
  • Timed Trials
    • Verified Trials
    • Unverified Trials
  • Licensing Docker Apps
  • Webhooks
  • Automated Emails
  • Web Integration
    • Personal Access Tokens
    • Using Web API
    • Using Zapier
    • Using FastSpring
    • Custom Development
  • Changelog
    • Web API
    • LexActivator
    • LexFloatClient
    • LexFloatServer
  • Legal
    • Terms of Service
    • Privacy Policy
    • Subprocessors
    • Data Processing Addendum
    • Service Level Agreement
    • Security, Privacy, and Compliance
    • Open Source Licenses
  • Cryptlex On-Premise
    • Overview
    • System Requirements
    • Server Layout
    • Installation Guide
      • Docker Compose
      • Kubernetes
    • Configuring Client Libraries
    • Monitoring and Error Reporting
Powered by GitBook
On this page
  • Adding licensing to your app
  • Adding the library to your app
  • Setting product id
  • Requesting floating license
  • Renewing floating license
  • Dropping floating license
  • Need more help
  1. Floating Licenses
  2. On-Premise Floating Licenses
  3. Using LexFloatClient

Using LexFloatClient with Go

PreviousUsing LexFloatClient with Node.jsNextUsing LexFloatClient with Android

Last updated 10 months ago

Adding licensing to your app

After you've added a product for your app in the admin portal, you will need to do the following things:

  • Note the product id for the product (from the actions menu in the table).

  • Download the example project from

The product id is the identifier of your product that is to be used in the code. The product id of the LexFloatServer and LexFloatClient must match.

Adding the library to your app

LexFloatClient wrapper for Go can be easily installed using the go get command:

go get -u github.com/cryptlex/lexfloatclient-go

Note: In case you are using Windows, execute the following command after installation:

xcopy %USERPROFILE%\go\src\github.com\cryptlex\lexfloatclient-go\libs\windows_amd64\LexFloatClient.dll

This would copy the LexFloatClient.dll to your project directory.

LexFloatClient has a dependency on VS2015 runtime on Windows. On the target machines where you will deploy your app, you can install the VS2015 runtime, if not present, using the link:

This package relies on cgo to interface with a C library. As a result, cgo must be enabled when building and using this package. Disabling cgo (e.g., by setting CGO_ENABLED=0) will result in compilation errors.

Setting product id

The first LexFloatClient API function you need to use in your code is SetHostProductId(). It sets the product id of the product you will be adding licensing to.

lexfloatclient.SetHostProductId("PASTE_PRODUCT_ID");

Requesting floating license

To receive a floating license, you will use SetHostUrl(), SetFloatingLicenseCallback() and RequestFloatingLicense()LexFloatClient API methods. It sets the LexFloatServer address, the callback for status notifications, contacts the server and receives the floating license.

func main() {
	var status int
	status = lexfloatclient.SetHostProductId("PASTE_PRODUCT_ID")
	if lexfloatclient.LF_OK != status {
		fmt.Println("Error Code:", status)
		os.Exit(1)
	}
	status = lexfloatclient.SetHostUrl("http://localhost:8090")
	if lexfloatclient.LF_OK != status {
		fmt.Println("Error Code:", status)
		os.Exit(1)
	}
	lexfloatclient.SetFloatingLicenseCallback(licenseCallback)
	status = lexfloatclient.RequestFloatingLicense()
	if lexfloatclient.LF_OK != status {
		fmt.Println("Error Code:", status)
		os.Exit(1)
	}  
	fmt.Println("Success! License acquired.") 
}

The above code can be executed every time user starts the app or needs a new license.

Renewing floating license

License lease automatically renews itself in a background thread. When a license is renewed or fails to renew, the callback is invoked (from the background thread).

func licenseCallback(status int) {
	if status == lexfloatclient.LF_OK {
		fmt.Println("The license lease has renewed successfully.")
	} else if status == lexfloatclient.LF_E_LICENSE_NOT_FOUND {
		fmt.Println("he license expired before it could be renewed.")
	} else if status == lexfloatclient.LF_E_LICENSE_EXPIRED_INET {
		fmt.Println("The license expired due to network connection failure.")
	} else {
		fmt.Println("The license renew failed due to other reason. Error code:", status)
	}
}

Dropping floating license

When your user is done using the app, the app should send a request to free the license, thereby making it available to other users. If the app doesn't, the license becomes useless (zombie) until lease time is over.

lexfloatclient.DropFloatingLicense()
fmt.Println("Success! License dropped.")

The above code should be executed every time user closes the app.

Need more help

In case you need more help with adding LexFloatClient to your app, we'll be glad to help you make the integration. You can either post your questions on our or can contact us through .

Github
https://www.microsoft.com/en-in/download/details.aspx?id=48145
support forum
email