00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include <string>
00032 #include <syn/Core/Module.h>
00033 #include <syn/Core/Connection.h>
00034 #include <syn/Core/Terminal.h>
00035
00036 namespace syn
00037 {
00038 Terminal::Terminal( Module& module, const std::string& name )
00039 : mModule( module ), mName( name ), mDisconnect( new Connection )
00040 {
00041 mConnection = mDisconnect;
00042 mDisconnect->queue().setHighMark( 0 );
00043 mDisconnect->queue().setLowMark( 0 );
00044 mDisconnect->queue().setDone( true );
00045 }
00046
00047 Terminal::~Terminal()
00048 {
00049 mName = "deleted";
00050 }
00051
00052 bool Terminal::done()
00053 {
00054 return mConnection->queue().done();
00055 }
00056
00057 void Terminal::setDone( bool d )
00058 {
00059 if (this->isConnected())
00060 mConnection->queue().setDone( d );
00061 }
00062
00063
00064 const std::string& Terminal::name() const
00065 {
00066 return mName;
00067 }
00068
00069 void Terminal::setName( const std::string& name )
00070 {
00071 mName = name;
00072 }
00073
00076 void Terminal::disconnect() { mConnection = mDisconnect; }
00077
00079 bool Terminal::isConnected() const { return bool(mConnection.get() != mDisconnect.get()); }
00080
00081 void Terminal::setConnection( ConnectionPtr conn )
00082 {
00083 mConnection = conn;
00084 }
00085
00090 void Terminal::connect( TerminalPtr inptr, TerminalPtr outptr )
00091 {
00092 ConnectionPtr conn = ConnectionPtr( new Connection );
00093 inptr->setConnection( conn );
00094 outptr->setConnection( conn );
00095 conn->connect( inptr, outptr );
00096 }
00097
00099 Connection& Terminal::connection()
00100 {
00101 assert( mConnection.get() != NULL );
00102 return (*mConnection.get());
00103 }
00104
00105 }