| Quintiq file version 2.0 | 
| #parent: #root | 
| MethodOverride ExecuteOutbound | 
| { | 
|   TextBody: | 
|   [* | 
|     connector := guard( this.DistributedServiceProviderBase().Connector(), null( DSP_ConnectorBase ) ); | 
|     if ( not isnull( connector ) ) | 
|     {   | 
|       traverse ( this, RegisteredSlaveNode, slave, slave.NeedSent()  ) | 
|       {  | 
|         assert( this.SentQueue().IsEmpty(), "Messsage left in sent queue" ); | 
|          | 
|         current_mesage := guard ( slave.LastSentOperationMessage().NextMessage() | 
|                                 , this.OutboundMasterQueue().FirstMessage() | 
|                                 ); | 
|                                  | 
|         while ( not isnull( current_mesage ) ) | 
|         { | 
|           message_copy := current_mesage.DeepCopy().astype( DSP_OperationMessage );  | 
|           this.SentQueue().AddMessage( &message_copy );         | 
|           current_mesage := current_mesage.NextMessage(); | 
|         } | 
|          | 
|         connector.SentMessages( slave.NodeId(), this.SentQueue() );    | 
|          | 
|         this.SentQueue().Flush(); | 
|          | 
|         slave.LastSentOperationMessage( relset, this.OutboundMasterQueue().LastMessage() ); | 
|       } | 
|     } | 
|     else | 
|     { | 
|       info( "Distributed Service Provider has no connector" ); | 
|     } | 
|   *] | 
| } |