diff options
| author | Mattias Andrée <maandree@kth.se> | 2016-07-16 19:28:39 +0200 | 
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2016-07-16 19:28:39 +0200 | 
| commit | 0c0d0ca0da8060484ab5f41a6ee73087755a69e3 (patch) | |
| tree | dd455f5a29edba440f2194a60fc06f0ceed8f397 /src/crtc-server | |
| parent | attributes (diff) | |
| download | coopgammad-0c0d0ca0da8060484ab5f41a6ee73087755a69e3.tar.gz coopgammad-0c0d0ca0da8060484ab5f41a6ee73087755a69e3.tar.bz2 coopgammad-0c0d0ca0da8060484ab5f41a6ee73087755a69e3.tar.xz | |
Restructure
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
| -rw-r--r-- | src/crtc-server/server.c | 59 | ||||
| -rw-r--r-- | src/crtc-server/server.h | 49 | 
2 files changed, 108 insertions, 0 deletions
| diff --git a/src/crtc-server/server.c b/src/crtc-server/server.c new file mode 100644 index 0000000..6c16cee --- /dev/null +++ b/src/crtc-server/server.c @@ -0,0 +1,59 @@ +/** + * coopgammad -- Cooperative gamma server + * Copyright (C) 2016  Mattias Andrée (maandree@kth.se) + *  + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *  + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + *  + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#include "server.h" +#include "../state.h" +#include "../communication.h" + +#include <string.h> + + + +/** + * Handle a ‘Command: enumerate-crtcs’ message + *  + * @param   conn        The index of the connection + * @param   message_id  The value of the ‘Message ID’ header + * @return              Zero on success (even if ignored), -1 on error, + *                      1 if connection closed + */ +int handle_enumerate_crtcs(size_t conn, const char* restrict message_id) +{ +  size_t i, n = 0, len; +  char* restrict buf; +   +  for (i = 0; i < outputs_n; i++) +    n += strlen(outputs[i].name) + 1; +   +  MAKE_MESSAGE(&buf, &n, 0, +	       "Command: crtc-enumeration\n" +	       "In response to: %s\n" +	       "Length: %zu\n" +	       "\n", +	       message_id, n); +   +  for (i = 0; i < outputs_n; i++) +    { +      len = strlen(outputs[i].name); +      memcpy(buf + n, outputs[i].name, len); +      buf[n + len] = '\n'; +      n += len + 1; +    } +   +  return send_message(conn, buf, n); +} + diff --git a/src/crtc-server/server.h b/src/crtc-server/server.h new file mode 100644 index 0000000..ffe4f64 --- /dev/null +++ b/src/crtc-server/server.h @@ -0,0 +1,49 @@ +/** + * coopgammad -- Cooperative gamma server + * Copyright (C) 2016  Mattias Andrée (maandree@kth.se) + *  + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *  + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + *  + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef CRTC_SERVER_SERVER_H +#define CRTC_SERVER_SERVER_H + + +#include <stddef.h> + + + +#ifndef GCC_ONLY +# if defined(__GNUC__) && !defined(__clang__) +#  define GCC_ONLY(...)  __VA_ARGS__ +# else +#  define GCC_ONLY(...)  /* nothing */ +# endif +#endif + + + +/** + * Handle a ‘Command: enumerate-crtcs’ message + *  + * @param   conn        The index of the connection + * @param   message_id  The value of the ‘Message ID’ header + * @return              Zero on success (even if ignored), -1 on error, + *                      1 if connection closed + */ +GCC_ONLY(__attribute__((nonnull))) +int handle_enumerate_crtcs(size_t conn, const char* restrict message_id); + + +#endif + | 
