| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-01-09 02:29:59 +0100 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-01-09 02:29:59 +0100 | 
| commit | 87a86b9a599de35d09da7d954ba662091accc90b (patch) | |
| tree | aa9ceaafce612bc622a7a8fcfed34ab74226245c /src/server | |
| parent | c7c834e9944c94de3d07f21ce2d2d3f18a03b3b2 (diff) | |
Adds all the new functionalities.daemon
Some TODOs and slight coding style inconsistencies remaining, though...
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/handle_client.c | 57 | 
1 files changed, 57 insertions, 0 deletions
| diff --git a/src/server/handle_client.c b/src/server/handle_client.c index 5212440..a213fe2 100644 --- a/src/server/handle_client.c +++ b/src/server/handle_client.c @@ -15,12 +15,68 @@  #include <relabsd/debug.h>  #include <relabsd/server.h> +#include <relabsd/device/virtual_device.h> +#include <relabsd/device/axis.h> +  #include <relabsd/config/parameters.h>  /******************************************************************************/  /**** LOCAL FUNCTIONS *********************************************************/  /******************************************************************************/ +static void propagate_changes +( +   struct relabsd_server server [const static 1] +) +{ +   struct relabsd_axis * axis; +   int i; +   int virtual_device_is_dirty; + +   virtual_device_is_dirty = 0; + +   for (i = 0; i < RELABSD_AXIS_VALID_AXES_COUNT; ++i) +   { +      axis = +         relabsd_parameters_get_axis +         ( +            (enum relabsd_axis_name) i, +            &(server->parameters) +         ); + +      if (relabsd_axis_attributes_are_dirty(axis)) +      { +         (void) relabsd_virtual_device_update_axis_absinfo +         ( +            (enum relabsd_axis_name) i, +            axis, +            &(server->virtual_device) +         ); + +         relabsd_axis_set_attributes_are_dirty(0, axis); + +         virtual_device_is_dirty = 1; +      } +   } + +   if (relabsd_parameters_device_name_is_dirty(&(server->parameters))) +   { +      (void) relabsd_virtual_device_rename +      ( +         &(server->parameters), +         &(server->virtual_device) +      ); + +      relabsd_parameters_clean_device_name(&(server->parameters)); +      virtual_device_is_dirty = 1; +   } + +   if (virtual_device_is_dirty) +   { +      (void) relabsd_virtual_device_recreate(&(server->virtual_device)); +   } +} +  /******************************************************************************/  /**** EXPORTED FUNCTIONS ******************************************************/  /******************************************************************************/ @@ -54,6 +110,7 @@ int relabsd_server_handle_client        socket_as_file,        &(server->parameters)     ); +   propagate_changes(server);     pthread_mutex_unlock(&(server->mutex));     /* This also closes 'socket' */ | 


