/** * mds — A micro-display server * Copyright © 2014, 2015 Mattias Andrée (maandree@member.fsf.org) * * 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 . */ #include "comm.h" #include /** * Initialise a connection descriptor with the the default values * * @param this The connection descriptor */ void libmds_connection_initialise(libmds_connection_t* restrict this) { this->socket_fd = -1; this->message_id = UINT32_MAX; this->client_id = NULL; } /** * Allocate and initialise a connection descriptor * * @return The connection descriptor, `NULL` on error * * @throws ENOMEM Out of memory, Possibly, the process hit the RLIMIT_AS or * RLIMIT_DATA limit described in getrlimit(2). */ libmds_connection_t* libmds_connection_create(void) { libmds_connection_t* rc = malloc(sizeof(libmds_connection_t)); if (rc == NULL) return NULL; libmds_connection_initialise(rc); return rc; } /** * Release all resources held by a connection descriptor * * @param this The connection descriptor, may be `NULL` */ void libmds_connection_destroy(libmds_connection_t* restrict this) { if (this == NULL) return; /* TODO */ } /** * Release all resources held by a connection descriptor, * and release the allocation of the connection descriptor * * @param this The connection descriptor, may be `NULL` */ void libmds_connection_free(libmds_connection_t* restrict this) { libmds_connection_destroy(this); free(this); }