]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkConnection.cxx
MagicBox : support of data synchronization + various related fixes
[bbtk.git] / kernel / src / bbtkConnection.cxx
index bc6b3b1c001561de5335fb3311f7d027118dea5f..37c0eb6be1448122aacd7f025324e4f973e34329 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkConnection.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/12/11 09:50:35 $
-  Version:   $Revision: 1.19 $
+  Date:      $Date: 2009/03/30 14:42:16 $
+  Version:   $Revision: 1.20 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -116,9 +116,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output,
       {
        if ( from->bbGetOutputType(output) == typeid(Data) )
          {
-           bbtkWarning("Connection '"
-                       <<GetFullName()
-                       <<"' : '"<<from->bbGetName()<<"."<<output
+           bbtkWarning("Connection: '"<<from->bbGetName()<<"."<<output
                        <<"' is of type <"
                        <<HumanTypeName<Data>()
                        <<"> : type compatibility with '"
@@ -345,6 +343,18 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output,
                     "===> Connection::RecursiveExecute() ["
                     <<GetFullName()<<"]"<<std::endl);
 
+    /*
+    // If box from already executing : nothing to do
+    if (mFrom->bbGetExecuting()) 
+      {
+       bbtkDebugMessage("process",3,
+                        " -> "<<mFrom->bbGetName()
+                        <<" already executing : abort"<<std::endl);
+       return; 
+
+      }
+    */
+
     mFrom->bbRecursiveExecute(GetThisPointer<Connection>());
 
     TransferData();
@@ -407,8 +417,14 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output,
                         <<HumanTypeName(mTo->bbGetInputType(mInput))
                         <<">"<<std::endl);
        
+       // 0) If from any contents void : nothing to do 
+       if (mFrom->bbGetOutput(mOutput).type() == typeid(void)) 
+         {
+           bbtkDebugMessage("data",3,
+                            " -> Source is void : nothing to transfer!"<<std::endl);
+         }
        // 1) Test strict type matching between any content and target
-       if (mFrom->bbGetOutput(mOutput)
+       else if (mFrom->bbGetOutput(mOutput)
            .contains( mTo->bbGetInputType(mInput) ) )
          {
            bbtkDebugMessage("data",3,