+ if ( is_enabled() ) {
+ SG_LOG( SG_IO, SG_ALERT, "This shouldn't happen, but the channel "
+ << "is already in use, ignoring" );
+ return false;
+ }
+
+ SGIOChannel *io = get_io_channel();
+
+ if ( ! io->open( get_direction() ) ) {
+ SG_LOG( SG_IO, SG_ALERT, "Error opening channel communication layer." );
+ return false;
+ }
+
+ set_enabled( true );
+
+ return true;