ErikssonBeamFinder
Discover and connect to running Eriksson Beam instances automatically.
When to Use
- Eriksson Beam is already running
- You don't know the specific process ID
- You want to find an instance with a specific file open
- You want to discover all available instances
Basic Usage
Find Any Running Instance
var args = new ErikssonBeamConnectionAttemptArgs
{
LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
MaxAttempts = 10,
WaitTimeBetweenAttemptsMs = 1000
};
var client = await ErikssonBeamFinder.GetFirstSupportedBeamClient(args);
try
{
var design = await client.PullBeamDesignerAsync();
// Work with design...
}
finally
{
client.Dispose();
}
Find Instance with Specific File
// By file name
var client = await ErikssonBeamFinder.GetFirstClientWithFile("MyProject", args);
// By full path
var client = await ErikssonBeamFinder.GetFirstClientWithFile(@"C:\Projects\MyProject.ebf", args);
List All Available Instances
// Get process IDs of all supported Eriksson Beam instances
var processIds = await ErikssonBeamFinder.GetSupportedErikssonBeamInstances();
foreach (var pid in processIds)
{
Console.WriteLine($"Found Eriksson Beam instance: PID {pid}");
}
Configuration Options
ErikssonBeamConnectionAttemptArgs
| Property | Type | Default | Description |
|---|---|---|---|
LicenseKey |
string | "" |
Required. API authorization key |
ProcessID |
int | -1 |
Ignored by Finder methods |
IdleTimeoutMs |
int | 30000 |
Client connection timeout (ms) |
MaxAttempts |
int | 10 |
Connection retry attempts |
WaitTimeBetweenAttemptsMs |
int | 1000 |
Delay between retries (ms) |
Version Compatibility
The Finder only returns instances with compatible API versions:
- Connects to instances with matching major version
- Automatically filters out older incompatible versions
- No configuration needed - handled automatically
Important: 10-Minute Idle Timeout
Eriksson Beam only listens for API connections for 10 minutes after launch.
- This timer starts when Eriksson Beam opens
- Not reset by manual UI interactions
- After timeout, API connections will fail
If connections fail:
- Close Eriksson Beam
- Reopen Eriksson Beam
- Retry connection within 10 minutes
Error Handling
try
{
var client = await ErikssonBeamFinder.GetFirstSupportedBeamClient(args);
// ...
}
catch (ErikssonBeamNotRunningException)
{
Console.WriteLine("No running Eriksson Beam instances found.");
Console.WriteLine("Please start Eriksson Beam and try again.");
}
catch (TimeoutException)
{
Console.WriteLine("Connection timed out. Eriksson Beam may have exceeded its 10-minute idle limit.");
Console.WriteLine("Restart Eriksson Beam and try again.");
}
Complete Example
using System;
using System.Threading.Tasks;
using ErikssonBeam.API.BeamClient;
class ConnectToRunning
{
static async Task Main()
{
var args = new ErikssonBeamConnectionAttemptArgs
{
LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
MaxAttempts = 5,
WaitTimeBetweenAttemptsMs = 2000
};
Console.WriteLine("Searching for running Eriksson Beam instances...");
try
{
// List all available instances
var instances = await ErikssonBeamFinder.GetSupportedErikssonBeamInstances();
Console.WriteLine($"Found {instances.Length} instance(s)");
if (instances.Length == 0)
{
Console.WriteLine("Please start Eriksson Beam first.");
return;
}
// Connect to first available
var client = await ErikssonBeamFinder.GetFirstSupportedBeamClient(args);
try
{
// Get list of open files
var openFiles = await client.GetOpenBeamProjects();
Console.WriteLine($"Open files: {string.Join(", ", openFiles)}");
if (openFiles.Length > 0)
{
var design = await client.PullBeamDesignerAsync(openFiles[0]);
Console.WriteLine($"Project: {design.DesignCriteria.ProjectInformation.ProjectName}");
}
}
finally
{
client.Dispose();
}
}
catch (ErikssonBeamNotRunningException)
{
Console.WriteLine("No compatible Eriksson Beam instances found.");
}
}
}
Methods Reference
GetFirstSupportedBeamClient
public static async Task<ErikssonBeamClient> GetFirstSupportedBeamClient(
ErikssonBeamConnectionAttemptArgs args,
ILogger logger = null)
Returns a connected client to the first compatible Eriksson Beam instance found.
Throws:
ErikssonBeamNotRunningException- No instances foundTimeoutException- Connection attempts exhausted
GetFirstClientWithFile
public static async Task<ErikssonBeamClient> GetFirstClientWithFile(
string fileNameOrPath,
ErikssonBeamConnectionAttemptArgs args,
ILogger logger = null)
Returns a connected client to an instance that has the specified file open.
Parameters:
fileNameOrPath- File name (without extension) or full file path
Throws:
ErikssonBeamNotRunningException- No instances with that file found
GetSupportedErikssonBeamInstances
public static async Task<int[]> GetSupportedErikssonBeamInstances()
Returns process IDs of all running Eriksson Beam instances with compatible API versions.
IsRunning
public static bool IsRunning(int processId)
Checks if a specific process ID is a running Eriksson Beam instance.
See Also
- ErikssonBeamLauncher - Launch new instances
- ErikssonBeamClient - Connect to specific process
- Connection Overview - Choosing the right connection method