X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNetwork%2Fnative.cxx;h=48edaf11566d4d81ccb1d697598ad8090190b4e9;hb=206053722eb59b31ed2fb182044f84bac0058f8a;hp=fcf3f572957f175f3529a55f0e9ecbb6464c445f;hpb=d05121ef4689d2b50b3fe1848cbb0d1f5a1db877;p=flightgear.git diff --git a/src/Network/native.cxx b/src/Network/native.cxx index fcf3f5729..48edaf115 100644 --- a/src/Network/native.cxx +++ b/src/Network/native.cxx @@ -16,16 +16,22 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ +#ifdef HAVE_CONFIG_H +# include +#endif #include -#include + #include "native.hxx" +#include
+#include +#include FGNative::FGNative() { } @@ -54,34 +60,21 @@ bool FGNative::open() { return true; } - // process work for this port -bool FGNative::process() { +bool FGNative::process() +{ + FDMShell* fdm = static_cast(globals->get_subsystem("flight")); + FGInterface* fdmState = fdm->getInterface(); + if (!fdmState) { + return false; + } + SGIOChannel *io = get_io_channel(); - int length = sizeof(*cur_fdm_state); - if ( get_direction() == SG_IO_OUT ) { - // cout << "size of cur_fdm_state = " << length << endl; - buf = *cur_fdm_state; - if ( ! io->write( (char *)(& buf), length ) ) { - SG_LOG( SG_IO, SG_ALERT, "Error writing data." ); - return false; - } - } else if ( get_direction() == SG_IO_IN ) { - if ( io->get_type() == sgFileType ) { - if ( io->read( (char *)(& buf), length ) == length ) { - SG_LOG( SG_IO, SG_DEBUG, "Success reading data." ); - *cur_fdm_state = buf; - } - } else { - while ( io->read( (char *)(& buf), length ) == length ) { - SG_LOG( SG_IO, SG_DEBUG, "Success reading data." ); - *cur_fdm_state = buf; - } - } + return fdmState->writeState(io); + } else { + return fdmState->readState(io); } - - return true; }