23 #ifndef CSL_RemoteStream_H
24 #define CSL_RemoteStream_H
31 #include <semaphore.h>
33 #ifdef CSL_WINDOWS // MS-Windows socket includes
36 typedef unsigned int in_addr_t;
38 #define MAXHOSTNAMELEN 256
40 #define SEM_FAILED ((sem_t*) 0) // For pthread semaphores -- why do we need this?
42 #else // UNIX socket includes
45 #include <sys/types.h>
46 #include <sys/socket.h>
47 #include <sys/param.h>
49 #include <netinet/in.h>
50 #include <arpa/inet.h>
51 #define closesocket(x) ::close(x)
67 #define RS_PACKET_MAGIC 0x00420000 // RS packet magic number
68 #define RS_PACKET_SIZE (sizeof(CSL_RFS_MSG)) // Size of RS request packets
69 #define RS_BUFFER_SIZE (mBufferSize * mNumChannels * sizeof(sample))
70 #define RS_RESPONSE_PACKET_SIZE (RFS_PACKET_SIZE + RS_BUFFER_SIZE + 4)
74 #define CSL_DEFAULT_REQUEST_PORT 57574 // Default port for RS requests (server listener)
80 #define CSL_CMD_SET_CLIENT 42 // Set up the server's response socket to the client
81 #define CSL_CMD_NEXT_BUFFER 43 // Request a buffer of samples from the server
85 #define CSL_CMD_STOP 47 // Stop the server
93 typedef void * (*THREAD_START_ROUTINE)(
void *);
103 RemoteStream(
char * clientName,
unsigned short clientPort,
unsigned ch,
unsigned bufSize);
131 int initSockets(
char * serverName,
unsigned short serverPort);
AdditiveInstrument.h – Sum-of-sines synthesis instrument class.
void nextBuffer(Buffer &outputBuffer)
Get a buffer of frames.
void * RS_read_loop(void *inst)
struct sockaddr_in mServerAddr
Socket addresses for the remote server and for me.
RemoteStream(char *clientName, unsigned short clientPort, unsigned ch, unsigned bufSize)
Constructor.
sample ** ioBuffers()
Accessors used by the reader thread.
int initSockets(char *serverName, unsigned short serverPort)
float sample
(could be changed to int, or double)
unsigned mBufferSize
the size of the input ring buffer (in FRAMES)
virtual int connectToServer()
sample * mIoBuffers[2]
My IO buffers (2 for dbl-buffering; mBufferSize frames in size)
sem_t * mServerSemaphore
Semaphore to trigger call to server for samples.
int CSL_CreateThread(THREAD_START_ROUTINE pfnThreadProc, void *pvParam)
unsigned mCurrentBuffer
current IO buffer in use
Buffer – the multi-channel sample buffer class (passed around between generators and IO guys)...
CSL_RS_MSG mHeader
The request packet header.
void *(* THREAD_START_ROUTINE)(void *)
unsigned mCurrentFrame
current position in buffer
int mSocket
The socket I send to.
unsigned short requestSize()
Base class of CSL exceptions (written upper-case). Has a string message.