+++ /dev/null
-/*
- Copyright (c) Grame 2009
-
- This library is free software; you can redistribute it and modify it under
- the terms of the GNU Library General Public License as published by the
- Free Software Foundation version 2 of the License, or 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 Library General Public License
- for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Grame Research Laboratory, 9, rue du Garet 69001 Lyon - France
- research@grame.fr
-
-*/
-
-#include <iostream>
-#include "OSCStream.h"
-
-using namespace std;
-
-namespace oscfaust
-{
-
-OSCStream* _oscout = 0; // OSC standard output stream
-OSCStream* _oscerr = 0; // OSC standard input stream
-
-static UdpSocket* _socket = 0; // a shared transmit socket
-
-
-//--------------------------------------------------------------------------
-OSCStream::OSCStream ()
- : fState(kIdle), fPort(1024), fAddress(kLocalhost), fOutStream(fBuffer, kOutBufferSize), fSocket(_socket)
-{
- if (!fSocket) cerr << "warning: incorrect OSCStream, _socket not initialized" << endl;
-}
-
-//--------------------------------------------------------------------------
-bool OSCStream::start ()
-{
- _socket = new UdpSocket;
- _oscout = new OSCStream(_socket);
- _oscerr = new OSCStream(_socket);
- return (_socket && _oscout && _oscerr);
-}
-
-//--------------------------------------------------------------------------
-void OSCStream::stop ()
-{
- delete _socket;
- delete _oscout;
- delete _oscerr;
- _oscout = _oscerr = 0;
- _socket = 0;
-}
-
-//--------------------------------------------------------------------------
-void OSCStream::setAddress (const string& address)
-{
- IpEndpointName dst (address.c_str());
- setAddress (dst.address);
-}
-
-//--------------------------------------------------------------------------
-OSCStream& OSCStream::start(const char * address)
-{
- stream().Clear();
- if (!stream().IsReady()) cerr << "OSCStream OutboundPacketStream not ready" << endl;
- stream() << osc::BeginMessage( address ) ;
- fState = kInProgress;
- return *this;
-}
-
-//--------------------------------------------------------------------------
-OSCStream& OSCStream::end()
-{
- if (state() == kInProgress) {
- stream() << osc::EndMessage;
- if (fSocket)
- fSocket->SendTo (IpEndpointName (fAddress, fPort), stream().Data(), stream().Size() );
- fState = kIdle;
- }
- return *this;
-}
-
-//--------------------------------------------------------------------------
-OSCStream& operator <<(OSCStream& s, const string& val)
-{
- s.stream() << val.c_str();
- return s;
-}
-
-//--------------------------------------------------------------------------
-OSCStream& operator <<(OSCStream& s, const OSCErr& val) { return s.start(val.fAddress); }
-OSCStream& operator <<(OSCStream& s, const OSCWarn& val) { return s.start(val.fAddress); }
-OSCStream& operator <<(OSCStream& s, const OSCStart& val) { return s.start(val.fAddress); }
-OSCStream& operator <<(OSCStream& s, const OSCEnd val) { return s.end(); }
-
-} // end namespace
-