ImagingTools Core SDK
Classes | Public Types | Public Member Functions | List of all members
imtdev::IDeviceEnumeratorabstract

Interface for asynchronous device enumeration. More...

#include <IDeviceEnumerator.h>

Inheritance diagram for imtdev::IDeviceEnumerator:
imtdev::IDeviceController imtdev::CDeviceControllerCompBase imtdev::CDeviceControllerProxyComp

Classes

class  IResultHandler
 Callback interface for receiving enumeration results. More...
 

Public Types

enum  StartResult { SR_OK , SR_PREVIOUS_ENUMERATION_NOT_FINISHED , SR_FAILED }
 Start enumeration result codes. More...
 

Public Member Functions

virtual StartResult StartEnumeration (IResultHandler *resultHandlerPtr)=0
 Start device enumeration process.
 
virtual void CancelEnumeration ()=0
 Cancel device enumeration process.
 

Detailed Description

Interface for asynchronous device enumeration.

IDeviceEnumerator provides an asynchronous protocol for discovering and enumerating devices. The enumeration process runs in the background and delivers results through a callback interface.

This interface is the base for IDeviceController and enables non-blocking device discovery, which is essential for responsive user interfaces and scenarios where device enumeration may take significant time (e.g., network devices, USB scanning).

Enumeration Protocol:
  1. Client calls StartEnumeration() with a result handler
  2. Enumerator performs discovery asynchronously
  3. Upon completion, enumerator calls handler's OnEnumerationResult()
  4. Client can cancel enumeration at any time via CancelEnumeration()
Usage Example:
class MyEnumerationHandler : public IDeviceEnumerator::IResultHandler
{
public:
void OnEnumerationResult(EnumerationResult result,
const IDeviceEnumerator* enumeratorPtr) override
{
if (result == ER_OK)
{
// Enumeration completed successfully
// Update device list from controller
}
else if (result == ER_CANCELED)
{
// Enumeration was canceled
}
else
{
// Enumeration failed
}
}
};
MyEnumerationHandler handler;
IDeviceEnumerator::StartResult result = pEnumerator->StartEnumeration(&handler);
{
// Enumeration started successfully
// Wait for callback or continue with other work
}
Callback interface for receiving enumeration results.
Interface for asynchronous device enumeration.
StartResult
Start enumeration result codes.
@ SR_OK
Enumeration started successfully.
Thread Safety:
Implementations should ensure that result handler callbacks are thread-safe. The callback may be invoked from a different thread than the one that called StartEnumeration().
See also
IDeviceController
IResultHandler

Definition at line 73 of file IDeviceEnumerator.h.

Member Enumeration Documentation

◆ StartResult

Start enumeration result codes.

Indicates whether enumeration was successfully initiated.

Enumerator
SR_OK 

Enumeration started successfully.

SR_PREVIOUS_ENUMERATION_NOT_FINISHED 

Cannot start - previous enumeration still running.

SR_FAILED 

Failed to start enumeration.

Definition at line 120 of file IDeviceEnumerator.h.

Member Function Documentation

◆ CancelEnumeration()

virtual void imtdev::IDeviceEnumerator::CancelEnumeration ( )
pure virtual

Cancel device enumeration process.

Requests cancellation of the current enumeration. The result handler will be notified with ER_CANCELED status.

Note
This is a request - enumeration may not stop immediately
See also
StartEnumeration()

◆ StartEnumeration()

virtual StartResult imtdev::IDeviceEnumerator::StartEnumeration ( IResultHandler resultHandlerPtr)
pure virtual

Start device enumeration process.

Initiates asynchronous device discovery. If enumeration starts successfully (SR_OK is returned), the provided result handler's OnEnumerationResult() will be called when enumeration completes.

Parameters
resultHandlerPtrHandler to receive enumeration completion notification
Returns
SR_OK if enumeration started, SR_PREVIOUS_ENUMERATION_NOT_FINISHED if enumeration is already running, or SR_FAILED on error
Note
Only one enumeration can run at a time per enumerator instance
See also
IResultHandler
CancelEnumeration()