diff options
| author | 2025-11-14 22:13:45 -0600 | |
|---|---|---|
| committer | 2025-11-15 00:21:37 -0600 | |
| commit | 635b33df0f7d567626fab4f1acaa91e5609e92ca (patch) | |
| tree | 981e50865b73732a9ea34a4e35d8229be6db5489 /connection.c | |
| parent | initial commit (diff) | |
update some stuff
Diffstat (limited to 'connection.c')
| -rw-r--r-- | connection.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/connection.c b/connection.c new file mode 100644 index 0000000..ecbb7fa --- /dev/null +++ b/connection.c @@ -0,0 +1,45 @@ +#include "connection.h" +#include "pipeline.h" +#include <stdlib.h> + +struct ptx_connection *ptx_connection_new(void) +{ + struct ptx_connection *conn = malloc(sizeof(struct ptx_connection)); + if (!conn) return NULL; + + /* initialize these in case we goto cleanup later */ + conn->cli_read = NULL; + conn->cli_write = NULL; + conn->srv_read = NULL; + conn->srv_write = NULL; + + /* do initialization */ + + if (!(conn->cli_read = ptx_pipeline_new(4))) goto cleanup; + if (!(conn->cli_write = ptx_pipeline_new(4))) goto cleanup; + if (!(conn->srv_read = ptx_pipeline_new(4))) goto cleanup; + if (!(conn->srv_write = ptx_pipeline_new(4))) goto cleanup; + + return conn; + +cleanup: + ptx_connection_free(conn); + + return NULL; +} + +void ptx_connection_free(struct ptx_connection *conn) +{ + /* NOTE: this function might be called with a partially-constructed or inconsistent object */ + + if (!conn) return; + + /* do cleanup */ + + ptx_pipeline_free(conn->cli_read); + ptx_pipeline_free(conn->cli_write); + ptx_pipeline_free(conn->srv_read); + ptx_pipeline_free(conn->srv_write); + + free(conn); +} |
