Real Time Open Sound Control librtosc: /build/rtosc/src/rtosc-0.3.1/include/rtosc/thread-link.h Source File

Real Time Open Sound Control librtosc

thread-link.h
1/*
2 * Copyright (c) 2012 Mark McCurry
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24
25#ifndef RTOSC_THREAD_LINK
26#define RTOSC_THREAD_LINK
27
28#include <cstring>
29#include <cassert>
30#include <cstdio>
31#include <rtosc/rtosc.h>
32
33namespace rtosc {
34typedef const char *msg_t;
35
42 class ThreadLink
43{
44 public:
45 ThreadLink(size_t max_message_length, size_t max_messages);
46 ~ThreadLink(void);
47
52 void write(const char *dest, const char *args, ...);
53
58 void writeArray(const char *dest, const char *args, const rtosc_arg_t *aargs);
59
63 void raw_write(const char *msg);
64
68 bool hasNext(void) const;
69
73 msg_t read(void);
74
78 msg_t peak(void) const;
79
83 char *buffer(void);
87 size_t buffer_size(void) const;
88 private:
89 const size_t MaxMsg;
90 const size_t BufferSize;
91 char *write_buffer;
92 char *read_buffer;
93
94 struct internal_ringbuffer_t *ring;
95};
96};
97#endif
rtosc::ThreadLink
ThreadLink - A simple wrapper around jack's ringbuffers desinged to make sending messages via rt-osc ...
Definition: thread-link.h:43
rtosc::ThreadLink::buffer
char * buffer(void)
Raw write buffer access for more complicated task.
rtosc::ThreadLink::peak
msg_t peak(void) const
Peak at last message read without reading another.
rtosc::ThreadLink::buffer_size
size_t buffer_size(void) const
Access to write buffer length.
rtosc::ThreadLink::raw_write
void raw_write(const char *msg)
Directly write message to ringbuffer.
rtosc::ThreadLink::hasNext
bool hasNext(void) const
rtosc::ThreadLink::writeArray
void writeArray(const char *dest, const char *args, const rtosc_arg_t *aargs)
Write an arary of arguments to ringbuffer.
rtosc::ThreadLink::write
void write(const char *dest, const char *args,...)
Write message to ringbuffer.
rtosc::ThreadLink::read
msg_t read(void)
Read a new message from the ringbuffer.
rtosc.h
Functions handling messages and arguments.
rtosc_arg_t
Definition: rtosc.h:70