iup-stack/iup/srctuio/tuio/OscReceiver.h

98 lines
2.7 KiB
C
Raw Normal View History

2023-02-20 16:44:45 +00:00
/*
TUIO C++ Library
Copyright (c) 2005-2017 Martin Kaltenbrunner <martin@tuio.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3.0 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library.
*/
#ifndef INCLUDED_OSCRECEIVER_H
#define INCLUDED_OSCRECEIVER_H
#include "LibExport.h"
#include "TuioClient.h"
#include "osc/OscReceivedElements.h"
#include "osc/OscHostEndianness.h"
#include "ip/PacketListener.h"
#include "ip/IpEndpointName.h"
namespace TUIO {
class TuioClient; // Forward declaration
/**
* The OscReceiver is the base class for the various OSC transport methods such as UDP, TCP ...
*
* @author Martin Kaltenbrunner
* @version 1.1.6
*/
class LIBDECL OscReceiver: public PacketListener {
public:
/**
* The constructor is doing nothing in particular.
*/
OscReceiver() : connected(false) {};
/**
* The destructor is doing nothing in particular.
*/
virtual ~OscReceiver() {};
/**
* The OscReceiver connects and starts receiving TUIO messages via OSC
*
* @param lock running in the background if set to false (default)
*/
virtual void connect(bool lock=false) = 0;
/**
* The OscReceiver disconnects and stops receiving TUIO messages via OSC
*/
virtual void disconnect() = 0;
/**
* Returns true if this OscReceiver is currently connected.
* @return true if this OscReceiver is currently connected
*/
bool isConnected();
/**
* Attaches the provided TuioClient to this OscReceiver
*
* @param client a pointer to the TuioClient to attach
*/
void addTuioClient(TuioClient *client);
/**
* The OSC callback method where the incoming OSC data is received
*
* @param data the received OSC data
* @param size the size of the received OSC data
* @param remoteEndpoint the origin of the received OSC data
*/
void ProcessPacket( const char *data, int size, const IpEndpointName &remoteEndpoint );
protected:
void ProcessBundle( const osc::ReceivedBundle& b, const IpEndpointName& remoteEndpoint);
void ProcessMessage( const osc::ReceivedMessage& message, const IpEndpointName& remoteEndpoint);
std::list<TuioClient*> clientList;
bool connected;
};
};
#endif /* INCLUDED_OSCRECEIVER_H */