How to...

Overview

See the Delphi 10 and Delphi 7 examples on GitHub which demonstrate various io.Connect Desktop features.

The io.Connect COM library allows you to interop-enable your Delphi apps, integrate them with other interop-enabled apps in io.Connect Desktop and use io.Connect functionality in them. To access io.Connect functionalities in your Delphi app, you have to reference and initialize the io.Connect COM library. Currently, the io.Connect COM library supports Delphi 7 and Delphi 10.

Using the io.Connect COM Library

Referencing

The io.Connect COM library is available as a package in NuGet which you can include in your projects. The io.Connect COM library is also distributed with io.Connect Desktop and is usually located in the %LocalAppData%/interop.io/io.Connect Desktop/SDK/GlueCOMv2 folder.

To use any io.Connect Desktop functionality, you need to add the following units to your Delphi project:

  • GlueCOM_TLB.pas - declarations for the io.Connect COM type library;
  • mscorlib_TLB.pas - declarations for the Microsoft Common Object Runtime library (the io.Connect COM type library depends on it);
  • GlueHelper.pas - Delphi native types for wrapping low-level COM functionality;

⚠️ Note that you must not import the io.Connect COM type library (GlueCOM.dll) directly into your project. The provided GlueCOM_TLB unit has been modified to use specific alignment for some records. Importing the io.Connect COM type library will overwrite these required modifications.

Initialization

Initialize the io.Connect interface in the app main form by following these steps:

  1. Import the GlueCOM_TLB unit:
uses
  GlueCOM_TLB;
  1. Declare a variable to hold the io.Connect COM object and a procedure to perform the initialization:
type
  TMainForm = class(TForm)

  private
    // The io.Connect entry point handle.
    G42: IGlue42;
  protected
    procedure InitializeGlue;
  1. Implement the initialization:
procedure TMainForm.InitializeGlue;
var
  inst: GlueInstance;
  cfg: GlueConfiguration;
begin
  try
    // Create the io.Connect COM object.
    G42 := CoGlue42.Create() as IGlue42;

    // Configure own identity.
    ZeroMemory(@inst, sizeof(inst));
    inst.ApplicationName := 'MyDelphiApp';
    inst.Metadata := nil;
    ZeroMemory(@cfg, sizeof(cfg));
    cfg.AppDefinitionTitle := 'My Delphi App';
    G42.OverrideConfiguration(cfg);

    // Initialize and start io.Connect.
    G42.Start(inst);
  except
    on E: Exception do
    begin
      // Handle errors.
    end;
  end;
end;
  1. You can invoke InitializeGlue in the OnCreate event handler and perform cleanup in the OnClose event handler for the form:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  InitializeGlue;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(G42) then
  begin
    G42.Stop;
  end;
end;

App Definition

To add your Delphi app to the io.Connect launcher, you must create a JSON file with app definition. Place this file in the %LocalAppData%/interop.io/io.Connect Desktop/UserData/<ENV>-<REG>/apps folder, where <ENV>-<REG> represents the environment and region of io.Connect Desktop (e.g., DEMO-INTEROP.IO).

The following is an example definition of a Delphi app:

{
    "title": "My Delphi App",
    "type": "exe",
    "name": "my-delphi-app",
    "details": {
        "path": "%GDDIR%/../Demos/DelphiDemo/",
        "command": "MyDelphiApp.exe",
        "parameters": " --mode=1"
    }
}

The "name", "type" and "path" properties are required and "type" must be set to "exe". The "path" property points to the app working directory.

The value of the "title" property will be used as a name for the app in the io.Connect launcher and as a window title.

For more details, see the Developers > Configuration > Application section.

io.Connect Delphi Concepts

Once the io.Connect COM library has been initialized, your app has access to all io.Connect functionalities. For more detailed information on the different io.Connect capabilities and APIs, see:

The following sections explain concepts related to using the io.Connect COM library.

io.Connect Time

io.Connect time is essentially a Unix timestamp: the number of milliseconds since the Unix epoch, i.e. 1970-01-01 00:00:00 UTC, ignoring leap seconds.

io.Connect timestamp arguments and values are stored in an Int64 type. To convert from io.Connect time to Delphi TDateTime and vice versa, use the following functions defined in the GlueHelper unit:

function GlueTimeToDateTime(msecs: Int64): TDateTime;
function DateTimeToGlueTime(dt: TDateTime): Int64;

⚠️ Note that io.Connect uses UTC internally, so the resulting TDateTime timestamp will also be in UTC, and not in local time.

io.Connect Helper Unit

The GlueHelper unit contains native type definitions and additional helper classes and methods facilitating the use of the io.Connect COM library.

It is recommended to use the conversion functions provided in the GlueHelper unit to transform the arguments or return values from a PSafeArray to native types and vice-versa:

  • The functions in the Create[type]_SA format can be used to transform various native types to a PSafeArray. The returned values need to be destroyed with SafeArrayDestroy when no longer needed.

  • The functions in the SA_As[type] format can be used to transform a PSafeArray to various native types.

Types

Array Types

The following array types are defined in the GlueHelper unit:

Array Type
GlueContextArray GlueContext
GlueContextValueArray GlueContextValue
GlueStreamSubscriberArray IGlueStreamSubscriber
GlueValueArray GlueValue
TDateTimeArray TDateTime
TDoubleArray Double
TGlueContextValueArray TGlueContextValue
TGlueInstanceArray GlueInstance
TGlueInvocationResultArray GlueInvocationResult
TGlueMethodArray GlueMethod
TGlueValueArray TGlueValue (pointer)
TInt64Array Int64
TIntArray Integer
TStrArray String
TWideStringArray WideString
TWordBoolArray WordBool

Pointer Types

The following pointer types are defined in the GlueHelper unit:

Type Points to
PGlueContextValue GlueContextValue
PGlueInvocationResult GlueInvocationResult
PGlueMethod GlueMethod
PGlueResult GlueResult
PGlueValue GlueValue
PTGlueValue TGlueValue

Native Record Types

TGlueContextValue

This is a translated version (i.e. not using PSafeArray directly or indirectly) of GlueContextValue representing a name-value pair.

Properties

Name Type Description
Name WideString Name associated with the value.
Value PTGlueValue Pointer to TGlueValue.

TGlueValue

This is a translated version (i.e. not using PSafeArray directly or indirectly) of GlueValue representing an elementary or composite value.

Properties

Name Type Description
GlueType GlueValueType Type of the io.Connect value.
IsArray WordBool Indicates whether the value is an array.

The following properties will be initialized according to GlueType and IsArray:

Name Type Description
BoolValue WordBool Boolean value.
LongValue Int64 Integer value.
DoubleValue Double Double-precision floating-point value.
StringValue WideString String value.
BoolArray TWordBoolArray Array of WordBool values.
LongArray TInt64Array Array of Int64 values.
DoubleArray TDoubleArray Array of Double values.
StringArray TStrArray Array of String values.
DateTimeArray TDateTimeArray Array of TDateTime values.
Tuple TGlueValueArray Array of TGlueValue values.
CompositeValue TGlueContextValueArray Array of TGlueContextValue values.

Working with PSafeArray

The GlueHelper unit provides a set of functions for converting from/to PSafeArray which is widely used when sending or receiving data from io.Connect.

Summary

The table below summarizes the available functions to convert from/to PSafeArray based on the content type.

Array Type Array of From To
TDoubleArray Double SA_AsDoubleArray CreateArray_SA
TInt64Array Int64 SA_AsInt64Array CreateArray_SA
TStrArray String SA_AsStringArray CreateArray_SA
TWideStringArray WideString SA_AsWideStringArray CreateArray_SA
TWordBoolArray WordBool SA_AsWordBoolArray CreateArray_SA
TDateTimeArray TDateTime SA_AsDateTimeArray
⚠️ Note that the safe array is of Int64 values representing io.Connect time.
-
GlueStreamSubscriberArray IGlueStreamSubscriber SA_AsGlueStreamSubscriberArray -
GlueContextArray GlueContext SA_AsGlueContextArray -
GlueContextValueArray GlueContextValue SA_AsGlueContextValueArray CreateContextValues_SA
TGlueContextValueArray TGlueContextValue SA_AsTranslatedContextValues AsGlueContextValueArray, then CreateContextValues_SA
TGlueInstanceArray GlueInstance SA_AsGlueInstanceArray CreateInstanceArray_SA
TGlueInvocationResultArray GlueInvocationResult SA_AsGlueInvocationResultArray -
TGlueMethodArray GlueMethod SA_AsGlueMethodArray -
GlueValueArray GlueValue SA_AsGlueValueArray CreateTuple_SA

Conversion Functions

All conversion functions accept a single argument of the respective type. The returned PSafeArray must be destroyed with SafeArrayDestroy when no longer needed.

| Function | Argument Type | Return Type | Array of Type | |----------|----------------|-------------|------------ ---| | AsGlueContextValueArray | TGlueContextValueArray | GlueContextValueArray | GlueContextValue | | CreateArray_SA | TDoubleArray | PSafeArray | Double | | CreateArray_SA | TInt64Array | PSafeArray | Int64 | | CreateArray_SA | TStrArray | PSafeArray | String | | CreateArray_SA | TWideStringArray | PSafeArray | WideString | | CreateArray_SA | TWordBoolArray | PSafeArray | WordBool | | CreateContextValues_SA | GlueContextValueArray | PSafeArray | GlueContextValue | | CreateTuple_SA | GlueValueArray | PSafeArray | GlueValue | | SA_AsDateTimeArray | PSafeArray | TDateTimeArray | TDateTime | | SA_AsDoubleArray | PSafeArray | TDoubleArray | Double | | SA_AsGlueContextArray | PSafeArray | GlueContextArray | GlueContext | | SA_AsGlueContextValueArray | PSafeArray | GlueContextValueArray | GlueContextValue | | SA_AsGlueInstanceArray | PSafeArray | TGlueInstanceArray | GlueInstance | | SA_AsGlueInvocationResultArray | PSafeArray | TGlueInvocationResultArray | GlueInvocationResult | | SA_AsGlueMethodArray | PSafeArray | TGlueMethodArray | GlueMethod | | SA_AsGlueStreamSubscriberArray | PSafeArray | GlueStreamSubscriberArray | IGlueStreamSubscriber | | SA_AsGlueValueArray | PSafeArray | GlueValueArray | GlueValue | | SA_AsInt64Array | PSafeArray | TInt64Array | Int64 | | SA_AsStringArray | PSafeArray | TStrArray | String | | SA_AsTranslatedContextValues | PSafeArray | TGlueContextValueArray | TGlueContextValue | | SA_AsWideStringArray | PSafeArray | TWideStringArray | WideString | | SA_AsWordBoolArray | PSafeArray | TWordBoolArray | WordBool |

Functions for Creating io.Connect and Context Values

CreateContextValue

This function creates a TGlueContextValue representing a name-value pair. It can be put in a TGlueContextValueArray and eventually be converted to a PSafeArray in order to be sent to io.Connect.

Parameters:

Name Type Description
Name string String representing the name in the name-value pair.
Value TGlueValue The value of the name-value pair.

Return value: TGlueContextValue

CreateValue

This is a set of overloaded functions for creating TGlueValue values from various types. The overloads accepting arrays will create composite values. Each function accepts the following types as a single argument:

  • Double
  • Int64
  • Integer
  • String
  • TDoubleArray
  • TInt64Array
  • TStrArray

Return value: TGlueValue

CreateComposite

This function creates a composite value from a TGlueContextValueArray.

Parameters:

Name Type Description
Value TGlueContextValueArray An array of TGlueContextValue values representing the contents of the composite value.
IsArray Bool Specifies whether the created composite value is an array.

Return value: TGlueValue

CreateTuple

This function creates a composite value representing a tuple, i.e. an array of (possibly) heterogeneous elements.

Parameters:

Name Type Description
Value TGlueValueArray An array of TGlueValue values representing the elements of the tuple.

Return value: TGlueValue

Classes for Handling Events

A set of classes that implement callback interfaces in order to simplify the implementation of callback event handlers.

TGlueRequestHandler

This class implements the IGlueRequestHandler interface which invokes a callback whenever an already registered Interop method is invoked.

Class constructor parameters:

Name Type Description
Cookie TCallbackCookie Optional pointer to custom data which will be passed to the callback procedure.
handlerLambda TRequestHandlerLambda The procedure which will be invoked when the associated Interop method is invoked.

Callback procedure signature:

TRequestHandlerLambda = procedure(Sender: TGlueRequestHandler;
    Method: GlueMethod;
    Instance: GlueInstance;
    Args: GlueContextValueArray;
    callback: IGlueServerMethodResultCallback;
    Cookie: TCallbackCookie;
    argsSA: PSafeArray) of object;

TGlueResultHandler

This class implements the IGlueInvocationResultHandler interface which invokes a callback when the result from an Interop method invocation becomes available.

Class constructor parameters:

Name Type Description
Cookie TCallbackCookie Optional pointer to custom data which will be passed to the callback procedure.
handlerLambda TResultHandlerLambda The procedure which will be invoked when the result from the associated Interop method invocation becomes available.

Callback procedure signature:

TResultHandlerLambda = procedure(Sender: TGlueResultHandler;
    GlueResult: TGlueInvocationResultArray;
    Cookie: TCallbackCookie;
    const correlationId: WideString) of object;

TGlueStreamHandler

This class implements the IGlueStreamHandler interface which invokes callbacks for events related to Interop streaming methods.

Class constructor parameters:

Name Type Description
dataLambda TStreamDataLambda The procedure which will be invoked when data is pushed to the stream and to the subscriber.

Callback procedure signature:

TStreamDataLambda = procedure(Method: GlueMethod;
    data: GlueContextValueArray;
    dataAsSA: PSafeArray) of object;

COM/Delphi Reference

This reference describes the components in the io.Connect COM library relevant to Delphi.

⚠️ Note that the library also contains components that aren't intended to be directly used by Delphi apps.

Enums

GlueInstanceIdentity

Name Value Hex Binary
GlueInstanceIdentity_None 0 00 00000000
GlueInstanceIdentity_MachineName 1 01 00000001
GlueInstanceIdentity_ApplicationName 2 02 00000010
GlueInstanceIdentity_UserName 4 04 00000100
GlueInstanceIdentity_Instance 7 07 00000111
GlueInstanceIdentity_Environment 8 08 00001000
GlueInstanceIdentity_Region 16 10 00010000
GlueInstanceIdentity_LocalizedInstance 31 1F 00011111
GlueInstanceIdentity_ServiceName 32 20 00100000
GlueInstanceIdentity_Full 63 3F 00111111
GlueInstanceIdentity_Pid 64 40 01000000
GlueInstanceIdentity_InstanceId 128 80 10000000

GlueMethodFlags

Name Value Hex Binary
GlueMethodFlags_None 0 00 00000000
GlueMethodFlags_ReturnsResult 1 01 00000001
GlueMethodFlags_IsGuiOperation 2 02 00000010
GlueMethodFlags_IsUserSpecific 4 04 00000100
GlueMethodFlags_IsMachineSpecific 8 08 00001000
GlueMethodFlags_OutsideDomain 16 10 00010000
GlueMethodFlags_SupportsStreaming 32 20 00100000

GlueMethodInvocationStatus

Name Value
GlueMethodInvocationStatus_Succeeded 0
GlueMethodInvocationStatus_Failed 1
GlueMethodInvocationStatus_TimedOut 2
GlueMethodInvocationStatus_NotAvailable 3
GlueMethodInvocationStatus_Started 4

GlueState

Name Value
GlueState_Unknown 0
GlueState_Pending 1
GlueState_Connected 2
GlueState_Disconnected 3
GlueState_Inactive 4

GlueStreamState

Name Value
GlueStreamState_Pending 0
GlueStreamState_Stale 1
GlueStreamState_Opened 2
GlueStreamState_Closed 3
GlueStreamState_SubscriptionRejected 4
GlueStreamState_SubscriptionFailed 5

GlueValueType

Name Value
GlueValueType_Bool 0
GlueValueType_Int 1
GlueValueType_Double 2
GlueValueType_Long 3
GlueValueType_String 4
GlueValueType_DateTime 5
GlueValueType_Tuple 6
GlueValueType_Composite 7

GlueWindowEventType

⚠️ Note that some event types aren't applicable to Delphi apps.

Name Value Hex
GlueWindowEventType_Unknown 0 00
GlueWindowEventType_Snapshot 1 01
GlueWindowEventType_WindowFrameAdded 2 02
GlueWindowEventType_WindowFrameRemoved 3 03
GlueWindowEventType_WindowFrameChanged 4 04
GlueWindowEventType_ButtonClicked 5 05
GlueWindowEventType_ButtonRemoved 6 06
GlueWindowEventType_ButtonAdded 7 07
GlueWindowEventType_GroupHeaderVisibilityChanged 8 08
GlueWindowEventType_CompositionChanged 9 09
GlueWindowEventType_FrameColorChanged 10 0A
GlueWindowEventType_Created 11 0B
GlueWindowEventType_Closed 12 0C
GlueWindowEventType_UrlChanged 13 0D
GlueWindowEventType_ContextChanged 14 0E
GlueWindowEventType_VisibilityChanged 15 0F
GlueWindowEventType_BoundsChanged 16 10
GlueWindowEventType_StateChanged 17 11
GlueWindowEventType_FocusChanged 18 12
GlueWindowEventType_TitleChanged 19 13
GlueWindowEventType_WindowCanvasWindowChanged 20 14
GlueWindowEventType_TabHeaderVisibilityChanged 21 15
GlueWindowEventType_FrameSelectionChanged 22 16
GlueWindowEventType_ShowFlydownBoundsRequested 23 17
GlueWindowEventType_WindowZoomFactorChanged 24 18
GlueWindowEventType_FrameIsLockedChanged 25 19
GlueWindowEventType_DOMReady 26 1A
GlueWindowEventType_Hibernated 27 1B
GlueWindowEventType_Resumed 28 1C

Types

GlueAppDefinition

Definition of a child app to be registered in io.Connect.

Properties

Name Type Description
Category WideString App category.
Name WideString App name with which the app will be registered in io.Connect.
title WideString App title as it will appear in the io.Connect launcher.

GlueConfiguration

Used for overriding the default io.Connect configuration.

See also:

Properties

Name Type Description
LoggingConfigurationPath WideString Logging configuration path.
GWUri WideString io.Connect Gateway URI.
AppDefinitionStartup WideString App startup file.
AppDefinitionStartupArgs WideString App startup arguments.
AppDefinitionTitle WideString App title.

GlueContext

Stores information about an io.Connect shared context.

Properties

Name Type Description
Name WideString Name of the io.Connect shared context.
Id WideString Identifier of the io.Connect shared context.

GlueContextValue

This type represents a name-value pair.

Properties

Name Type Description
Name WideString Name associated with the value.
Value GlueValue io.Connect value.

GlueInstance

Describes the identity of an io.Connect instance, i.e. how the instance is seen by other io.Connect peers.

Properties

Name Type Description
InstanceId WideString Identifier of the io.Connect instance.
Version WideString Version reported by the app instance.
MachineName WideString Machine (network) name.
ProcessId Integer Process ID (PID).
ProcessStartTime Int64 io.Connect time when the process was started.
UserName WideString User name associated with the process.
ApplicationName WideString io.Connect app name.
Environment WideString io.Connect environment.
Region WideString io.Connect region.
ServiceName WideString io.Connect service name.
MetricsRepositoryId WideString io.Connect metrics repository identifier.
Metadata PSafeArray Optional array of GlueContextValue values providing additional information about the instance.

GlueInvocationResult

Holds information about the invoked Interop method and the result it has returned.

Properties

Name Type Description
Method GlueMethod Information about the Interop method returning the result.
Result GlueResult The result returned by the Interop method.

GlueMethod

Describes an Interop method.

Properties

Name Type Description
Name WideString Method name.
Input WideString Optional. String representation of the method input arguments signature.
Output WideString Optional. String representation of the method return value signature.
Instance GlueInstance Information about the io.Connect app instance that has registered the Interop method.
RegistrationCookie WideString Method registration cookie.
Flags GlueMethodFlags Interop method flags.
ObjectTypes PSafeArray Optional. Array of WideString values specifying the types of objects that the method works with (e.g., Instrument, Client, etc.).

GlueResult

Holds information about the result from invoking an Interop method.

Properties

Name Type Description
Values PSafeArray An array of GlueContextValue values representing the result.
Status GlueMethodInvocationStatus Status of the method invocation.
Message WideString Message related to the method invocation status.
LogDetails WideString Log details related to the result.

GlueValue

Represents an elementary or composite value.

Properties

Name Type Description
GlueType GlueValueType Type of the io.Connect value.
IsArray WordBool Indicates whether the value is an array.

The following properties will be initialized according to GlueType and IsArray:

Name Type Description
BoolValue WordBool Boolean value.
LongValue Int64 Integer value.
DoubleValue Double Double-precision floating-point value.
StringValue WideString String value.
BoolArray PSafeArray Array of WordBool values.
LongArray PSafeArray Array of Int64 values.
DoubleArray PSafeArray Array of Double values.
StringArray PSafeArray Array of WideString values.
Tuple PSafeArray Array of GlueValue values.
CompositeValue PSafeArray Array of GlueContextValue values.

Interfaces

IAppAnnouncer

An instance of this is passed to the implementation of the CreateApp method of the IAppFactory interface.

Methods

AnnounceAppCreationFailure

Informs io.Connect that a new child app instance couldn't be created.

Parameters:

Name Type Description
error WideString Text passed back to io.Connect as an error message.

Return value: None

RegisterAppInstance

Registers a new child app instance in io.Connect.

Parameters:

Name Type Description
hwnd Integer Handle to the window representing the io.Connect app instance.
glueApp IGlueApp An object of a class implementing the IGlueApp interface.

Return value: IGlueWindow

IAppFactory

Implementing this interface allows an object to act as a child app factory.

See also:

Methods

CreateApp

Creates a new instance of a child app.

Parameters:

Name Type Description
appDefName WideString Name with which the child app has been registered.
state GlueValue Saved app state.
announcer IAppAnnouncer Object used for announcing to io.Connect successful or failed app creation.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IAppFactoryRegistry

This interface is used for registering app factories and app instances.

Methods

RegisterAppFactory

Registers an app factory as a creator of a child app with the provided definition.

Parameters:

Name Type Description
appDefinition GlueAppDefinition Definition of the app to register.
factory IAppFactory An object of a class implementing the IAppFactory interface.

Return value: None

RegisterAppInstance

Register an app instance in io.Connect.

Parameters:

Name Type Description
appDefName WideString App name.
glueWindow IGlueWindow A registered io.Connect Window.
glueApp IGlueApp An object of a class implementing the IGlueApp interface.

Return value: None

IGlue42

Create a single object of this class in order to access io.Connect functionality.

Properties

Name Type Description
AppFactoryRegistry IAppFactoryRegistry Object for registering app factories and app instances.

Methods

BuildAndInvoke

Invokes an Interop method on a single or multiple targets.

Parameters:

Name Type Description
Method WideString Name of the method to invoke.
builderCallback IGlueContextBuilderCallback An object of a class implementing the IGlueContextBuilderCallback interface. This can be used to build the method invocation arguments.
targets PSafeArray Optional. Allows filtering the invocation targets. If provided, this must be an array of GlueInstance objects.
all WordBool Indicates whether the method should be invoked on all matching targets that offer it or only on the first one.
identity GlueInstanceIdentity Specifies the identity properties to be matched when applying the targets filter.
resultHandler IGlueInvocationResultHandler An object of a class implementing the IGlueInvocationResultHandler interface. This is used to handle the result from the method invocation.
invocationTimeoutMsecs Int64 The method invocation will time out after the specified number of milliseconds. If the provided value is less than or equal to zero, then the default timeout value will be used.
correlationId WideString Optional. An argument that will be passed to the implementation of the HandleResult method of the IGlueInvocationResultHandler interface.

Return value: None

BuildGlueContextValues

Creates a PSafeArray of GlueContextValue values using a callback method.

Parameters:

Name Type Description
contextBuilderCallback IGlueContextBuilderCallback An object of a class implementing the IGlueContextBuilderCallback interface

Return value: PSafeArray

An array of GlueContextValue values. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetAllInstances

Gets an array of all available io.Connect instances.

Parameters: None

Return value: PSafeArray

An array of GlueInstance objects. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetAllMethods

Gets an array of the available Interop methods from all io.Connect instances, including Interop streaming methods.

Parameters: None

Return value: PSafeArray

An array of GlueMethod objects. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetChannels

Gets an array of the names of all available io.Connect Channels.

Parameters: None

Return value: PSafeArray

An array of WideString values with the Channel names. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetInstance

Gets the current io.Connect instance.

Parameters: None

Return value: GlueInstance

Contains information about the current io.Connect app instance.

GetKnownContexts

Gets an array of all available io.Connect shared contexts.

Parameters: None

Return value: PSafeArray

An array of GlueContext values. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetMethodNamesForTarget

Gets the names of the Interop methods exposed by an app.

Parameters:

Name Type Description
targetRegex WideString Optional. Regular expression for filtering by app name. An empty string will match all app names.

Return value: PSafeArray

An array of WideString values with the method names. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetMethodsForInstance

Gets the Interop methods exposed by matching one or more app instances.

Parameters:

Name Type Description
Instance GlueInstance io.Connect instance with one or more properties set to the values to match.
identity GlueInstanceIdentity Specifies which properties set in the Instance parameter to be matched.

Return value: PSafeArray

An array of GlueMethod objects. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetStartingContext

Gets the starting context for the app.

Parameters: None

Return value: GlueValue

A GlueValue containing the starting context for the app.

GetStartupWindowSettings

Gets the default settings for the startup window.

Parameters: None

Return value: IGlueWindowSettings

An object of IGlueWindowSettings containing the default settings for the startup window.

GetTargets

Gets the names of all active apps (targets) currently offering Interop methods.

Parameters: None

Return value: PSafeArray

An array of WideString values with the app names. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

InvokeMethod

Invokes an Interop method on a specific single target.

Parameters:

Name Type Description
Method GlueMethod Information about the method to invoke.
invocationArgs PSafeArray Method invocation arguments. This must be an array of GlueContextValue values.
resultHandler IGlueInvocationResultHandler An object of a class implementing the IGlueInvocationResultHandler interface. This is used to handle the result from the method invocation.
invocationTimeoutMsecs Int64 The method invocation will time out after the specified number of milliseconds. If the provided value is less than or equal to zero, then the default timeout value will be used.
correlationId WideString Optional. An argument that will be passed to the implementation of the HandleResult method of the IGlueInvocationResultHandler interface.

Return value: None

InvokeMethods

Invokes an Interop method on a single or multiple targets.

Parameters:

Name Type Description
Method WideString Method name.
invocationArgs PSafeArray Method invocation arguments. This must be an array of GlueContextValue values.
targets PSafeArray Optional. Allows filtering the invocation targets. If provided, this must be an array of GlueInstance objects.
all WordBool Indicates whether the method should be invoked on all matching targets that offer it or only on the first one.
identity GlueInstanceIdentity Specifies the identity properties to be matched when applying the targets filter.
resultHandler IGlueInvocationResultHandler An object of a class implementing the IGlueInvocationResultHandler interface. This is used to handle the result from the method invocation.
invocationTimeoutMsecs Int64 The method invocation will time out after the specified number of milliseconds. If the provided value is less than or equal to zero, then the default timeout value will be used.
correlationId WideString Optional. An argument that will be passed to the implementation of the HandleResult method of the IGlueInvocationResultHandler interface.

Return value: None

InvokeSync

Invokes an Interop method synchronously.

Parameters:

Name Type Description
methodName WideString Name of the method to invoke.
argsAsJson WideString Arguments in JSON format to pass to the method.
resultFieldPath WideString Optional. Field path. If provided, the return value will be the value of the specified field within the entire result structure.
targetRegex WideString Optional. Regular expression for filtering targets by app name. If provided, the method will be invoked on all targets with app name matching the regular expression. If not provided, the method will be invoked on a single target.

Return value: WideString

The string represents the return values from the method invocation in JSON format.

IsLaunchedByGD

Determines whether the app was started by io.Connect Desktop or as a standalone executable.

Parameters: None

Return value: WordBool

The string represents the return values from the method invocation in JSON format.

JsonToVariant

Converts a JSON string to a variant array.

Parameters:

Name Type Description
json WideString The JSON string to convert.

Return value: PSafeArray

An array of variants. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

Log

Outputs a message to the io.Connect log.

Parameters:

Name Type Description
level Byte Log level. The following values are accepted: 0 (trace), 1 (debug), 2 (info), 3 (warn), 4 (error), 5 (fatal).
Message WideString The message text to log.

Return value: None

OverrideConfiguration

Overrides the default io.Connect configuration. This method must be invoked before invoking the Start method, otherwise it will have no effect.

Parameters:

Name Type Description
configuration GlueConfiguration The configuration to use.

Return value: None

RegisterGlueWindow

Initiates the registration of a window as an io.Connect Window and sets the related event handler.

Parameters:

Name Type Description
hwnd Integer Handle of the window to register.
windowEventHandler IGlueWindowEventHandler An object of a class implementing the IGlueWindowEventHandler interface.

Return value: IGlueWindow

An object representing the registered io.Connect Window.

⚠️ Note that the returned value shouldn't be used to interact with the io.Connect Window until the HandleWindowReady callback method is invoked (i.e. the registration is complete).

RegisterGlueWindowWithSettings

Initiates the registration of a window as an io.Connect Window with specific settings and sets the related event handler.

Parameters:

Name Type Description
hwnd Integer Handle of the window to register.
settings IGlueWindowSettings An object of IGlueWindowSettings containing the settings to use during the window registration.
windowEventHandler IGlueWindowEventHandler An object of a class implementing the IGlueWindowEventHandler interface.

Return value: IGlueWindow

⚠️ Note that the returned value shouldn't be used to interact with the io.Connect Window until the HandleWindowReady callback method is invoked (i.e. the registration is complete).

RegisterMethod

Registers an Interop method.

Parameters:

Name Type Description
methodName WideString Name for the method to register.
requestHandler IGlueRequestHandler An object of a class implementing the IGlueRequestHandler interface.
Input WideString Optional. String representation of the method input arguments signature.
Output WideString Optional. String representation of the method return value signature.
ObjectTypes PSafeArray Optional. Array of WideString values specifying the types of objects that the method works with (e.g., Instrument, Client, etc.).

Return value: GlueMethod

An object describing the registered Interop method. The return value can be used to unregister the method by using its UnregisterMethod method.

RegisterStartupGlueWindow

Initiates the registration of a window as an io.Connect Window and sets the related event handler. Uses the default startup options, if any.

Parameters:

Name Type Description
hwnd Integer Handle of the window to register.
windowEventHandler IGlueWindowEventHandler An object of a class implementing the IGlueWindowEventHandler interface.

Return value: IGlueWindow

An object representing the registered io.Connect Window.

⚠️ Note that the returned value shouldn't be used to interact with the io.Connect Window until the HandleWindowReady callback method is invoked (i.e. the registration is complete).

RegisterStartupGlueWindowWithSettings

Initiates the registration of a window as an io.Connect Window with specific settings and sets the related event handler. Uses the default startup options, if any.

Parameters:

Name Type Description
hwnd Integer Handle of the window to register.
settings IGlueWindowSettings An object of IGlueWindowSettings containing the settings to use during the window registration.
windowEventHandler IGlueWindowEventHandler An object of a class implementing the IGlueWindowEventHandler interface.

Return value: IGlueWindow

⚠️ Note that the returned value shouldn't be used to interact with the io.Connect Window until the HandleWindowReady callback method is invoked (i.e. the registration is complete).

RegisterStream

Registers an Interop stream (streaming method) and sets the related subscription handler.

Parameters:

Name Type Description
streamName WideString Name of the Interop stream to register.
subscriptionHandler IGlueSubscriptionHandler An object of a class implementing the IGlueSubscriptionHandler interface. This is used to handle incoming subscription requests.
Input WideString Optional. String representation of the method input arguments signature.
Output WideString Optional. String representation of the method return value signature.
ObjectTypes PSafeArray Optional. Array of WideString values specifying the types of objects that the method works with (e.g., Instrument, Client, etc.).
out stream IGlueStream Output parameter. An object representing the newly created stream.

Return value: GlueMethod

An object describing the registered Interop streaming method. The return value can be used to unregister the streaming method by using its UnregisterMethod method.

SetChannelData

Sets the value of a field in an existing io.Connect Channel.

Parameters:

Name Type Description
channel WideString The Channel name.
fieldPath WideString Path to the field in JavaScript notation (e.g., 'data.object1.object2.field1').
data WideString A string representing the value to set.

Return value: None

⚠️ Note that:

  • If any of the intermediate objects specified in fieldPath (e.g., object1) or the field itself (field1) don't exist in the JSON tree, they will be automatically created.
  • If any of the intermediate objects specified in fieldPath already exist in the JSON tree but aren't objects, the call will fail.
  • If the field specified in fieldPath (e.g., field1) already exists in the JSON tree, its value will be replaced. This will work also if the existing field is an object.

SetLogConfigurationPath

Overrides the io.Connect logging configuration path. This method must be invoked before invoking the Start method, otherwise it will have no effect.

See also:

Parameters:

Name Type Description
logConfigPath WideString Path to the io.Connect logging configuration.

Return value: None

Start

Connects to io.Connect and announces the app instance. The connection to io.Connect is necessary for using any io.Connect functionality.

Parameters:

Name Type Description
Instance GlueInstance Describes the identity to use when announcing the io.Connect app instance.

Return value: None

StartWithAppName

Connects to io.Connect and announces the app instance. The connection to io.Connect is necessary for using any io.Connect functionality.

Parameters:

Name Type Description
ApplicationName WideString The app name to use when announcing the io.Connect app instance.

Return value: None

⚠️ Note that invoking this method is equivalent to invoking the Start method with only the ApplicationName property of the Instance parameter initialized.

Stop

Disconnects from io.Connect, shutting down all communication.

Parameters: None

Return value: None

Subscribe

Subscribes an object of a class implementing the IGlueEvents interface for receiving various notifications from io.Connect.

Parameters:

Name Type Description
handler IGlueEvents An object of a class implementing the IGlueEvents interface.

Return value: None

SubscribeGlueContext

Subscribes to an io.Connect shared context.

Parameters:

Name Type Description
contextName WideString Name of the shared context. If the context doesn't exist, it will be automatically created.
handler IGlueContextHandler An object of a class implementing the IGlueContextHandler interface.

Return value: None

SubscribeStream

Subscribes to an Interop stream published by an io.Connect app instance and sets the related stream event handler.

Parameters:

Name Type Description
stream GlueMethod Description of the Interop streaming method to which to subscribe. The Name and Instance.InstanceId properties must be initialized respectively with the name of the Interop stream and the instance ID of the io.Connect app publishing the stream.
subscriptionRequestArgs PSafeArray An array of GlueContextValue values representing the arguments to pass with the subscription request.
streamHandler IGlueStreamHandler An object of a class implementing the IGlueStreamHandler interface which will receive the stream event notifications.
subscriptionTimeoutMsecs Int64 The subscription request will time out after the specified number of milliseconds. If the provided value is less than or equal to zero, then the default timeout value will be used.

Return value: None

SubscribeStreams

Subscribes to an Interop stream published by one or more io.Connect apps and sets the related stream event handler.

Parameters:

Name Type Description
streamName WideString Name of the Interop stream to subscribe to.
subscriptionRequestArgs PSafeArray An array of GlueContextValue values representing the arguments to pass with the subscription request.
targets PSafeArray Optional. Allows filtering the subscription targets. If provided, this must be an array of GlueInstance.
all WordBool Indicates whether the subscription request should be sent to all matching targets or only to the first one.
identity GlueInstanceIdentity Specifies the identity properties to be matched when applying the targets filter.
streamHandler IGlueStreamHandler An object of a class implementing the IGlueStreamHandler interface which will receive the stream event notifications.
subscriptionTimeoutMsecs Int64 The subscription request will time out after the specified number of milliseconds. If the provided value is less than or equal to zero, then the default timeout value will be used.

Return value: None

SubscribeStreamsFilterTargets

Subscribes to an Interop stream published by one or more io.Connect apps and sets the related stream event handler. Subscription targets can be filtered by name.

Parameters:

Name Type Description
streamName WideString Name of the Interop stream to subscribe to.
subscriptionRequestArgs PSafeArray An array of GlueContextValue values representing the arguments to pass with the subscription request.
targetRegex WideString Optional. Regular expression for filtering targets by app name. An empty string will match all app names.
all WordBool Indicates whether the subscription request should be sent to all matching targets or only to the first one.
streamHandler IGlueStreamHandler An object of a class implementing the IGlueStreamHandler interface which will receive the stream event notifications.
subscriptionTimeoutMsecs Int64 The subscription request will time out after the specified number of milliseconds. If the provided value is less than or equal to zero, then the default timeout value will be used.

Return value: None

UnregisterMethod

Unregisters an Interop method.

Parameters:

Name Type Description
Method GlueMethod Description of the method to unregister. This must be the value returned by RegisterMethod or RegisterStream.

Return value: None

Unsubscribe

Cancels a subscription created with the Subscribe method.

Parameters:

Name Type Description
handler IGlueEvents An object of a class implementing the IGlueEvents interface. This must be the same object previously passed to the Subscribe method.

Return value: None

Other Methods

The following methods of IGlue42 exposed in the COM library aren't intended to be used in Delphi:

  • AddCorrelationInterest
  • CloseResource
  • CreateGlueData
  • CreateGlueValues
  • CreateMethodInvocator
  • CreateServerMethod
  • CreateServerStream
  • CreateStreamConsumer
  • G4O_XL_OpenSheet
  • GetGlueContext
  • InvokeAsync
  • InvokeVariantData
  • RegisterGlueWindowInSink
  • RegisterMethodInSink
  • RegisterSingleBranchStream
  • RegisterStreamInSink
  • RegisterVariantMethodInSink
  • RegisterVoidMethodInSink
  • SubscribeChannel
  • SubscribeStreamInSink
  • TranslateVbObject
  • YieldCallbackData
  • YieldCallbackVariantData

IGlueApp

Implementing this interface allows an object to be registered as an io.Connect app instance.

See also:

Methods

Initialize

Initializes a child app.

Parameters:

Name Type Description
state GlueValue A previously saved app state.
glueWindow IGlueWindow The registered io.Connect Window for the app.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

SaveState

Saves the app state.

Parameters:

Name Type Description
receiver IGlueValueReceiver An instance of IGlueValueReceiver which can be used to set the the app state to be saved.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

Shutdown

Shuts down the app when io.Connect shuts down.

Parameters: None

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IGlueContext

This interface is implemented by io.Connect shared context objects.

Methods

BuildAndSetContextData

Sets new (replaces) shared context data using a callback method.

Parameters:

Name Type Description
builderCallback IGlueContextBuilderCallback An object of a class implementing the IGlueContextBuilderCallback interface.

Return value: None

BuildAndUpdateContextData

Updates the shared context data using a callback method.

Parameters:

Name Type Description
builderCallback IGlueContextBuilderCallback An object of a class implementing the IGlueContextBuilderCallback interface.

Return value: None

Close

Unsubscribes from the associated io.Connect shared context.

Parameters: None

Return value: None

GetContextInfo

Gets information about the shared context.

Parameters: None

Return value: GlueContext

GetData

Gets the shared context data.

Parameters: None

Return value: PSafeArray

An array of GlueContextValue values. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetDataAsJson

Retrieves data from the shared context by field path and returns it as JSON encoded data.

Parameters:

Name Type Description
fieldPath WideString Dot-separated string that represents a path in the shared context tree from where the JSON encoded data is to be read - e.g., "data.contact".

Return value: WideString

JSON encoded data that represents the shared context data - e.g., "{parent: {child: {age: 5, name:\"Jay\"}}}".

Remove

Removes an elementary or composite value from the shared context.

Parameters:

Name Type Description
fieldPath WideString Dot-separated string that represents a path in the shared context to the value to be removed, e.g. "data.contact".

Return value: None

SetContextData

Sets new (replaces) shared context data.

Parameters:

Name Type Description
data PSafeArray An array of GlueContextValue values representing the new context data.

Return value: None

SetContextDataOnFieldPath

Sets an array of context values under a context field specified by its path. If parts of the values in the path are missing, empty values will be created for them.

Parameters:

Name Type Description
fieldPath WideString Dot-separated string that represents a path in the shared context tree where the JSON encoded data is to be placed - e.g., "data.contact".
data PSafeArray An array of GlueContextValue values representing the new context data.

Return value: None

UpdateContextData

Updates the shared context data.

Parameters:

Name Type Description
data PSafeArray An array of GlueContextValue values representing the new context data.

Return value: None

UpdateContextDataJson

Updates the shared context data by field path with JSON encoded data.

Parameters:

Name Type Description
fieldPath WideString Dot-separated string that represents a path in the shared context tree where the JSON encoded data is to be placed - e.g., "data.contact".
jsonEncodedData WideString Valid JSON encoded data - e.g., "{parent: {child: {age: 5, name:\"Jay\"}}}"

Return value: None

Other Methods

The following methods of IGlueContext exposed in the COM library aren't intended to be used in Delphi:

  • GetReflectData
  • Open
  • SetValue

IGlueContextBuilder

An instance of this is passed as an argument to the implementation of the Build method of the IGlueContextBuilderCallback interface.

Methods

AddBool

Adds a Boolean value to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value WordBool The value to add.

Return value: None

AddBoolArray

Adds an array of Boolean values to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value PSafeArray An array of WordBool values.

Return value: None

AddComposite

Adds a composite value to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
composite PSafeArray The composite value as a PSafeArray.
IsArray WordBool Indicates whether the composite value is an array.

Return value: None

AddContextValue

Adds a value represented as a GlueContextValue to the shared context data.

Parameters:

Name Type Description
GlueContextValue GlueContextValue The GlueContextValue to add.

Return value: None

AddDatetime

Adds a datetime value to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value Int64 An integer representation of io.Connect time. This is defined as the number of milliseconds since the Unix epoch, i.e. 1970-01-01 00:00:00 UTC.

Return value: None

AddDatetimeArray

Adds an array of datetime values to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value PSafeArray An array of Int64 values representing io.Connect time.

Return value: None

AddDouble

Adds a double-precision floating-point value to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value Double The value to add.

Return value: None

AddDoubleArray

Adds an array of double-precision floating-point values to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value PSafeArray An array of Double values.

Return value: None

AddGlueValue

Adds a value represented as a GlueValue to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value GlueValue The value to add.

Return value: None

AddInt

Adds an integer value to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value Integer The value to add.

Return value: None

AddIntArray

Adds an array of integer values to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value PSafeArray An array of Integer values.

Return value: None

AddLong

Adds a long integer value to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value Int64 The value to add.

Return value: None

AddLongArray

Adds an array of long integer values to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value PSafeArray An array of Int64 values.

Return value: None

AddString

Add a string value to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value WideString The value to add.

Return value: None

AddStringArray

Adds an array of string values to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value PSafeArray An array of WideString values.

Return value: None

AddTuple

Adds a tuple of values to the context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Tuple PSafeArray Array of GlueValue values.

Return value: None

AddTupleValue

Adds a tuple of values represented as a GlueValue to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
Value GlueValue The value representing the tuple.

Return value: None

BuildComposite

Builds a value using a callback method and adds it to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
callback IGlueContextBuilderCallback An object of a class implementing the IGlueContextBuilderCallback interface.
IsArray WordBool Indicates whether the value is an array.

Return value: None

BuildTuple

Builds a tuple value using a callback method and adds it to the shared context data.

Parameters:

Name Type Description
Name WideString Name associated with the shared context value.
callback IGlueContextBuilderCallback An object of a class implementing the IGlueContextBuilderCallback interface.

Return value: None

Clear

Clears all shared context data.

Parameters: None

Return value: None

IGlueContextBuilderCallback

An instance of this is passed to the implementations of the methods which use callbacks for building shared context data values (e.g., BuildAndSetContextData or BuildComposite).

Methods

Build

Builds the shared context data.

Parameters:

Name Type Description
builder IGlueContextBuilder An instance of IGlueContextBuilder which can be used to build the shared context data.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IGlueContextHandler

Implementing this interface allows an object to receive notifications about changes in a shared context.

See also:

Methods

HandleContext

Handles the shared context when a subscription is activated via SubscribeGlueContext.

Parameters:

Name Type Description
context IGlueContext Use to set or update the shared context data.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleContextUpdate

Handles updates of the associated shared context.

Parameters:

Name Type Description
contextUpdate IGlueContextUpdate This object can be used to obtain information about the update of the shared context.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IGlueContextUpdate

Describes an update of a shared context.

Methods

GetAdded

Gets an array of the values which have been added to the shared context.

Parameters: None

Return value: PSafeArray

An array of GlueContextValue values. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetContext

Gets the shared context which has been updated.

Parameters: None

Return value: IGlueContext

GetRemoved

Gets an array of the names of the properties which have been removed from the shared context.

Parameters: None

Return value: PSafeArray

An array of WideString values. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

GetUpdated

Gets an array of the values which have been updated in the shared context.

Parameters: None

Return value: PSafeArray

An array of GlueContextValue values. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

IGlueEvents

Implementing this interface allows an object to receive notifications about various io.Connect events.

See also:

Methods

HandleConnectionStatus

Handles the event when the io.Connect connection status changes.

Parameters:

Name Type Description
state GlueState The new io.Connect connection state.
Message WideString Message text related to the connection status change.
date Int64 io.Connect time of the connection status change.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleGlueContext

Handles the event when a new shared context is created.

Parameters:

Name Type Description
context GlueContext Information about the shared context associated with the event.
created WordBool Indicates whether the shared context is newly created.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleInstanceStatus

Handles the event when an io.Connect app instance appears or disappears.

Parameters:

Name Type Description
Instance GlueInstance Information about the io.Connect app instance associated with the event.
active WordBool Indicates whether the app instance is now active.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleMethodStatus

Handles the event when an Interop method is registered or unregistered by an app instance.

Parameters:

Name Type Description
Method GlueMethod Information about the Interop method associated with the event.
active WordBool Indicates whether the Interop method is now active.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleException

Handles the event when an exception is thrown during the operation of io.Connect.

Parameters:

Name Type Description
Message WideString Message associated with the exception.
ex GlueValue A GlueValue containing additional information about the exception.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IGlueInvocationResultHandler

Implementing this interface allows an object to handle Interop method invocation results.

See also:

Methods

HandleResult

Handles the result from invoking an Interop method.

Parameters:

Name Type Description
invocationResult PSafeArray An array of GlueInvocationResult values.
correlationId WideString Correlation ID of the Interop method that was invoked.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IGlueRequestHandler

Implementing this interface allows an object to handle Interop method invocation requests.

See also:

Methods

HandleInvocationRequest

Handles the invocation of a registered Interop method.

Parameters:

Name Type Description
Method GlueMethod Information about the Interop method that is invoked.
caller GlueInstance Information about the io.Connect app instance that has invoked the method.
requestValues PSafeArray An array of GlueContextValue values representing the method invocation arguments.
resultCallback IGlueServerMethodResultCallback An object of a class implementing the IGlueServerMethodResultCallback interface. Can be used to send the result of the method invocation to the caller app instance.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IGlueServerMethodResultCallback

An instance of this is passed to the implementation of the HandleInvocationRequest method of the IGlueRequestHandler interface.

Methods

SendResult

Sends the result from invoking an Interop method to the caller app instance.

Parameters:

Name Type Description
Result GlueResult The result to send back to the caller.

Return value: None

IGlueServerSubscriptionCallback

An instance of this is passed to the implementation of the HandleSubscriptionRequest method of the IGlueSubscriptionHandler interface.

Methods

Accept

Accepts an Interop stream subscription request.

Parameters:

Name Type Description
branch WideString Optional. Name of the stream branch on which the subscriber will be accepted. If the specified branch doesn't exist, it will be created.
Result GlueResult Subscription result information to be sent back to the subscriber.

Return value: IGlueStreamBranch

An instance of IGlueStreamBranch representing the branch on which the subscriber was accepted. If the branch parameter is empty, the default (unnamed) branch for the stream will be returned.

Reject

Rejects an Interop stream subscription request.

Parameters:

Name Type Description
Result GlueResult Rejection information to be sent back to the app requesting the subscription.

Return value: None

IGlueStream

Represents a streaming Interop method.

Methods

CloseBranch

Closes a stream branch, disconnecting all subscribers to the branch and removing the branch from the stream.

Parameters:

Name Type Description
branch WideString Name of the branch to close.

Return value: None

CloseStream

Closes a stream, disconnecting all subscribers to the stream on all branches. All branches will be removed from the stream.

Parameters: None

Return value: None

GetBranch

Gets an existing stream branch.

Name Type Description
branchKey WideString The name of the branch to get.

Return value: IGlueStreamBranch

Can be used to perform stream actions specific to the branch.

GetBranchKeys

Get the names of the available stream branches.

Parameters: None

Return value: PSafeArray

An array of WideString values with the names of the available branches. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

Push

Pushes data to the stream.

Parameters:

Name Type Description
data PSafeArray An array of GlueContextValue values representing the data to be pushed to the stream.
branch WideString Optional. Branch name to which to push the data. The branch must have been created previously. If not specified, the data will be broadcast to all subscribers.

Return value: None

IGlueStreamBranch

Represents a branch of an Interop stream.

Methods

Close

Closes a stream branch, disconnecting all subscribers to the branch and removing the branch from the stream.

Parameters: None

Return value: None

GetKey

Gets the name of the stream branch.

Parameters: None

Return value: WideString

A string containing the name of the stream branch.

GetStream

Gets the Interop stream to which the branch belongs.

Parameters: None

Return value: IGlueStream

An instance representing the Interop stream to which the branch belongs.

GetSubscribers

Gets all subscribers to the stream branch.

Parameters: None

Return value: PSafeArray

An array of IGlueStreamSubscriber instances representing all current subscribers to the stream branch. The returned value must be destroyed with SafeArrayDestroy when no longer needed.

Push

Pushes data to the stream branch.

Parameters:

Name Type Description
data PSafeArray An array of GlueContextValue values representing the data to be pushed to the stream branch.

Return value: None

IGlueStreamHandler

Implementing this interface allows an object to receive notifications about Interop stream events.

See also:

Methods

HandleStreamData

Handles the data that has been pushed by an Interop stream to the subscriber.

Parameters:

Name Type Description
stream GlueMethod Information about the Interop streaming method that pushed the data.
data PSafeArray An array of GlueContextValue values representing the data pushed by the streaming method.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleStreamStatus

Handles changes of the state of the Interop stream subscription (e.g., when the subscription is accepted, rejected, closed).

Parameters:

Name Type Description
stream GlueMethod Information about the Interop streaming method related to the subscription.
state GlueStreamState The new state of the stream subscription.
Message WideString Message related to the subscription status change.
dateTime Int64 io.Connect time of the subscription state change.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

StreamClosed

Handles the event when the Interop stream associated with the subscription has been closed.

Parameters:

Name Type Description
stream GlueMethod Information about the Interop streaming method related to the subscription.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

SubscriptionActivated

Handles the event when the subscription request has been dispatched to io.Connect.

Parameters:

Name Type Description
GlueStreamSubscription IGlueStreamSubscription An instance of the stream subscription that can later be used to close the subscription from the client side.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IGlueStreamSubscriber

Describes an Interop stream subscriber.

Methods

Close

Disconnects the subscriber from the Interop stream.

Parameters:

Name Type Description
data PSafeArray An array of GlueContextValue values. This parameter is currently ignored.

Return value: None

GetSubscriberInstance

Gets the io.Connect app instance subscribed to the stream.

Parameters: None

Return value: GlueInstance

Description of the io.Connect app instance subscribed to the stream.

Push

Pushes data to the subscriber.

Parameters:

Name Type Description
data PSafeArray An array of GlueContextValue values representing the data to be pushed to the subscriber.

Return value: None

IGlueStreamSubscription

Describes an Interop stream subscription.

Methods

Close

Disconnects the subscriber from the stream.

Parameters: None

Return value: None

IGlueSubscriptionHandler

Implementing this interface allows an object to handle stream subscription events for a registered Interop stream.

See also:

Methods

HandleSubscriber

Handles the event when a new subscriber to the stream has been accepted.

Parameters:

Name Type Description
subscriberInstance GlueInstance Description of the io.Connect app instance which has subscribed to the stream.
glueStreamSubscriber IGlueStreamSubscriber An instance of IGlueStreamSubscriber representing the new subscriber.
requestValues PSafeArray An array of GlueContextValue values representing the arguments passed with the subscription request.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleSubscriberLost

Handles the event when a subscriber has unsubscribed from the stream. This also includes the cases where subscribers have been forcefully unsubscribed when the Close method has been called for a subscriber, stream or stream branch.

Parameters:

Name Type Description
subscriberInstance GlueInstance Description of the io.Connect app instance which is no longer subscribed to the stream.
glueStreamSubscriber IGlueStreamSubscriber An instance of IGlueStreamSubscriber representing the lost subscriber.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleSubscriptionRequest

Handles the event when an io.Connect app instance requests to subscribe to the stream.

Parameters:

Name Type Description
stream GlueMethod Description of the Interop stream for which the subscription is requested.
caller GlueInstance Description of the io.Connect app instance requesting to subscribe to the stream.
requestValues PSafeArray An array of GlueContextValue values representing the arguments passed with the subscription request.
callback IGlueServerSubscriptionCallback An instance of IGlueServerSubscriptionCallback which can be used to accept or reject the subscription request.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IGlueValueReceiver

An instance of this is passed to the implementation of the SaveState method of the IGlueApp interface.

Methods

SendGlueValue

Sends a GlueValue to be set as an app state.

Parameters:

Name Type Description
glueValue GlueValue Value to set as an app state.

Return value: None

IGlueWindow

Describes an io.Connect Window.

Methods

Activate

Activates the window.

Parameters: None

Return value: None

GetChannelContext

Gets the current Channel context for the window.

Parameters: None

Return value: IGlueContext

If the window is not currently bound to a Channel, returns Null.

GetChannelSupport

Determines whether the Channel Selector box is visible in the io.Connect Window title bar.

Parameters: None

Return value: WordBool

GetId

Gets the io.Connect Window identifier as a string.

Parameters: None

Return value: WideString

GetTitle

Gets the io.Connect Window title.

Parameters: None

Return value: WideString

IsVisible

Determine whether the io.Connect Window is visible.

Parameters: None

Return value: WordBool

SetChannelSupport

Hides or shows the Channel Selector box in the io.Connect Window title bar.

Parameters:

Name Type Description
showLink WordBool Indicates whether the Channel Selector box is to be visible or not.
⚠️ Note that hiding or showing the Channel Selector box doesn't enable or disable Channel support for the window - this can only be done during the window registration.

Return value: None

SetTitle

Sets the io.Connect Window title.

Parameters:

Name Type Description
title WideString Text to set in the window title bar.

Return value: None

SetVisible

Makes the io.Connect Window visible or invisible.

Parameters:

Name Type Description
visible WordBool Indicates whether the window is to be visible or not.

Return value: None

Unregister

Unregisters the io.Connect Window.

Parameters: None

Return value: None

IGlueWindowEventHandler

Implementing this interface allows an object to receive Channel change or update notifications for a registered io.Connect Window.

See also:

Methods

HandleWindowReady

Handles the event when the io.Connect Window registration has completed.

Parameters:

Name Type Description
glueWindow IGlueWindow The registered io.Connect Window.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleChannelChanged

Handles the event when the user changes the Channel via the Channel Selector box in the window title bar.

Parameters:

Name Type Description
glueWindow IGlueWindow The registered io.Connect Window for the app.
channel IGlueContext The context object of the newly selected Channel.
prevChannel GlueContext Information about the previously selected Channel.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleChannelData

Handles the event when the data in the currently selected Channel has changed or when the user selects a new Channel via the Channel Selector box in the window title bar.

Parameters:

Name Type Description
glueWindow IGlueWindow The registered io.Connect Window for the app.
channelUpdate IGlueContextUpdate This object can be used to obtain information about the update of the Channel context.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleWindowEvent

Handles additional window events.

Parameters:

Name Type Description
glueWindow IGlueWindow The registered io.Connect Window for the app.
eventType GlueWindowEventType The type of the window event.
eventData GlueValue Additional information about the window event.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

HandleWindowDestroyed

Handles the event when the io.Connect Window is destroyed.

Parameters:

Name Type Description
glueWindow IGlueWindow The registered io.Connect Window for the app.

Return value: HResult

⚠️ Note that the implementation must return S_OK.

IGlueWindowSettings

Contains properties representing the settings to use during an io.Connect Window registration.

See also:

Properties

Name Type Default Description
AllowTabClose WordBool True Specifies whether a tab window will have a "Close" button. Only applicable when the window Type is set to "Tab".
AllowUnstick WordBool True Specifies whether the io.Connect Window can be separated from other io.Connect Windows once it has been stuck to another io.Connect Window or window group. (Currently unusable.)
Channel WideString '' Specifies the Channel to be initially selected. No Channel is selected by default.
ChannelSupport WordBool False Specifies whether the window will have Channel support enabled.
FrameColor WideString '' The color of the window frame. (Currently unusable.)
Icon WideString '' Icon for the app. (Currently unusable.)
IsSticky WordBool True Specifies whether the window can be stuck to other io.Connect Windows or window groups.
MaxHeight Integer 0 Specifies the maximum height (in pixels) to which the window can be resized. A value of 0 means no limit. The height of the window title bar isn't included.
Maximizable Integer True Specifies whether the window will have a "Maximize" button.
MaxWidth Integer 0 Specifies the maximum width (in pixels) to which the window can be resized. A value of 0 means no limit.
MinHeight Integer 0 Specifies the minimum height (in pixels) to which the window can be resized. The height of the window title bar isn't included.
Minimizable WordBool True Specifies whether the window will have a "Minimize" button.
MinWidth Integer 0 Specifies the minimum width (in pixels) to which the window can be resized.
ShowTaskbarIcon WordBool True Specifies whether the window should have an icon in the taskbar.
StandardButtons WideString '' Optional list of comma-separated values specifying which command buttons will be available in the window title bar. See Standard Buttons below.
SynchronousDestroy WordBool False Delphi apps must always set this value to True.
Title WideString '' Specifies the window title. If an empty string is provided, the initial window title will be set to the name of the io.Connect app registering the window.
Type WideString 'Flat' Specifies the window type. The available types are "Flat" and "Tab".

StandardButtons

The StandardButtons property specifies which command buttons will be available in the window title bar. A comma-separated list of the following values may be provided:

Value Description
'None' No command buttons will be shown. This is used to hide all command buttons and can't be combined with other values.
'LockUnlock' Show the "Lock/Unlock" button.
'Extract' Show the "Extract" button.
'Collapse' Show the "Collapse" button.
'Minimize' Show the "Minimize" button. Works in conjunction with the Minimizable property which must also be set to True for the button to be visible.
'Maximize' Show the "Maximize" button. Works in conjunction with the Maximizable property which must also be set to True for the button to be visible.
'Close' Show the "Close" button.
'Default' | '' Equivalent to 'Collapse,Minimize,Maximize,Close'.