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 
33 namespace rtosc {
34 typedef const char *msg_t;
35 
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
Definition: rtosc.h:70
Functions handling messages and arguments.