Receives responses from daemon on requests sent via EveusbController. Pure abstract class.
Write an inheriting class with the implementation of methods and pass an instance of this class
to EveusbController::setEventHandler, after that, send requests to daemon via
EveusbController.
Methods:
● void onError(const std::string &msg);
● long writeToDaemon(const std::string &buf);
● long readFromDaemon(std::vector<char> &buf);
● void onMessage(const std::string &msg, bool incoming);
● void onVersion(const std::string &version);
● void onCompressionHint(bool size_or_speed);
● void onLicense(const License &info);
● void onActivation(const Activation &info, const std::string &error, bool online);
● void onOfflineRequest(const std::string &data);
● void onShareLimitExceeded(Device &dev, int limit);
● void onLocalDeviceTreeEnumerated();
● void onSharedDevicesEnumerated();
● void onRemoteDevicesEnumerated();
● void onServerFound(const std::string &host);
● void onServerDeviceFound(Device &dev);
● void onServerDevicesEnumerated(const std::string &host);
● void onLocalDeviceInfo(const std::string &devname, const DeviceInfo &info);
● void onLocalSharedUnshared(Device &dev, bool shared);
● void onLocalAcquiredReleased(Device &dev, bool acquired);
● void onRemoteConnecting(Device &dev);
● void onRemoteConnected(Device &dev);
● void onRemoteReconnecting(Device &dev);
● void onRemoteDisconnecting(Device &dev);
● void onRemoteDisconnected(Device &dev);
● void onRemoteDeleted(Device &dev);
void onError(const std::string &msg);
Notifies about non-critical errors. There are parse errors, unknown command, bad syntax, etc.
Parameters:
msg - text of error
long writeToDaemon(const std::string &buf);
Call this method to write buf to socket connection established with daemon. Example of
implementation: return write(fd, buf.data(), buf.size());
Parameters:
buf - data that needs to be written to socket
Return:
Returns bytes actually transferred or -1 in case of error.
Note:
See readFromDaemon() to find out why const std::string &buf is used instead of traditional
(const void *buf, size_t len) arguments.
long readFromDaemon(std::vector<char> &buf);
Call this method to read no more than buf.size() bytes into buf from socket connection
established with daemon.
Example of implementation: return read(fd, &buf[0], buf.size());
Parameters:
buf - buffer to which data from socket will be written
Return:
Returns bytes actually transferred or -1 in case of error.
Remarks:
SWIG forces to use std::vector<char> instead of traditional (void *buf, size_t len) arguments.
The reason is that SWIG automatically passes std::vector<char> to/from target language,
you do not need to write typemaps for every language that you will use.
The example of how to deal with (void *buf, size_t len) in Python can be found in
SWIG documentation, Multi-argument typemaps.
void onMessage(const std::string &msg, bool incoming);
Notifies about messages received from or sent to daemon. Call this method for debug purposes,
etc.
Parameters:
msg - message
incoming - true if message is incoming (received from the daemon), false if message is outgoing
(sent to the daemon)
Remarks:
You should not parse this message and can ignore it.
void onVersion(const std::string &version);
This method is called after invocation of EveusbController::getVersion
Parameters:
version - сomma-separated values
the first field - daemon version in format MAJOR.MINOR.RELEASE.
the second field - version verbose description that includes new line character.
void onCompressionHint(bool size_or_speed);
This method is called after invocation of EveusbController::getCompressionHint
Parameters:
size_or_speed - current value
void onLicense(const License &info);
This method is called after invocation of EveusbController::getLicense
Parameters:
info - structure that contains information from the license
Note:
see EveusbController::getLicense()
void onActivation(const Activation &info, const std::string &error, bool online);
This method is called after invocation of EveusbController::getLicense or EveusbController::Activate
Parameters:
info - structure that contains information from the license
error - result of the activation request
online - true if EveusbController::Activate method was called, false in all other сases
Note:
see EveusbController::getLicense()
void onOfflineRequest(const std::string &data);
This method is called after invocation of EveusbController::getOfflineRequest
Parameters:
data - data that should be sent to the activation server to request offline activation
Note:
see EveusbController::getOfflineRequest()
void onLoglevel(int level);
This method is called if loglevel changed or current value was requested via getLoglevel.
Parameters:
level - constants from syslog: LOG_ERR, LOG_WARNING, ...
void onShareLimitExceeded(Device &dev, int limit);
This method is called if there was an attempt to share a device which couldn’t be shared due
to license limitations. See EveusbController::localShare
Parameters:
dev - device you tried to share
limit - max number of devices you can share according to your license
void onLocalDeviceTreeEnumerated();
End of enumeration notifications (no more devices left).
See EveusbController::enumLocalDeviceTree
void onSharedDevicesEnumerated();
End of enumeration notifications (no more devices left).
See EveusbController::enumSharedDevices
void onRemoteDevicesEnumerated();
End of enumeration notifications (no more devices left).
See EveusbController::enumRemoteDevices
void onServerFound(const std::string &host);
Server or devices search notifications. See EveusbController::findServers
Parameters:
host - address of the detected host
void onServerDeviceFound(Device &dev);
Server or devices search notifications. See EveusbController::findServerDevices
Parameters:
dev - object corresponding to device found. This object can be used to perform actions on
the device (connect, disconnect, etc.)
void onServerDevicesEnumerated(const std::string &host);
Server or devices search notifications. End of enumeration notifications (no more devices left).
See EveusbController::findServerDevices
Parameters:
host - address of host for which devices were found
void onLocalDeviceInfo(const std::string &devname, const DeviceInfo &info);
Local device notifications. See EveusbController::enumLocalDeviceTree
Parameters:
devname - sys name of device (unique USB device identifier obtained from kernel:
hub-port[.port ...])
info - structure that contains information about device (see above)
void onLocalAddedRemoved(const std::string &devname, int maxchild, const std::string &name, bool added);
Local device notifications. Is called if list of local devices changed (device was plugged into
a USB port/unplugged)
Parameters:
devname - sys name of device (unique USB device identifier obtained from
kernel: hub-port[.port ...])
maxchild - number of hub ports (= 0 for USB devices, > 0 for hubs)
name - device name
added - true if device was connected to a USB port, false if it was disconnected
void onLocalSharedUnshared(Device &dev, bool shared);
Local device notifications. Is called after invocation of EveusbController::localShare,
EveusbController::enumSharedDevices
Parameters:
dev - object corresponding to device which was shared or unshared. You can use it to perform
actions on the device (share, unshare, etc.)
shared - true if the device was shared, false if it was unshared
void onLocalAcquiredReleased(Device &dev, bool acquired);
Local device notifications. This method is called if client connects to shared device. See
EveusbController::enumSharedDevices
Parameters:
dev - object corresponding to shared device. You can use it to perform actions on the device
(share, unshare, etc.)
acquired - true if client was connected to the device, false if it was disconnected
void onRemoteConnecting(Device &dev);
Remote device notifications. This method is called when you’re trying to connect to a remote
device. See EveusbController::remoteConnect, EveusbController::enumRemoteDevices
Parameters:
dev - object corresponding to device you’re trying to connect to. You can use it to perform
actions on the device (connect, disconnect, etc.)
void onRemoteConnected(Device &dev);
Remote device notifications. This method is called after connecting to a remote device. See
EveusbController::remoteConnect, EveusbController::enumRemoteDevices
Parameters:
dev - object corresponding to device you connected to. You can use it to perform actions on the
device (connect, disconnect, etc.)
void onRemoteReconnecting(Device &dev);
Remote device notifications. This method is called when reconnecting to a remote device after
failure. See EveusbController::enumRemoteDevices
Parameters:
dev - object corresponding to device you’re trying to reconnect to. You can use it to perform
actions on the device (connect, disconnect, etc.)
void onRemoteDisconnecting(Device &dev);
Remote device notifications. This method is called when disconnecting from a remote device.
See EveusbController::remoteDisconnect, EveusbController::enumRemoteDevices
Parameters:
dev - object corresponding to device which is going to be disconnected. You can use it to
perform actions on the device (connect, disconnect, etc.)
void onRemoteDisconnected(Device &dev);
Remote device notifications. This method is called after disconnecting from a remote device.
See EveusbController::remoteDisconnect, EveusbController::enumRemoteDevices
Parameters:
dev - object corresponding to disconnected device. You can use it to perform actions on the
device (connect, disconnect, etc.)
void onRemoteDeleted(Device &dev);
Remote device notifications. This method is called if the remote device is not on the list any
more. See EveusbController::remoteDelete
Parameters:
dev - object corresponding to remote device