]> git.mxchange.org Git - flightgear.git/blobdiff - src/Network/protocol.hxx
Merge branch 'jmt/track-bug' into next
[flightgear.git] / src / Network / protocol.hxx
index 1fcc9597132bc49acb1b92e2aff7787b05877601..03cf8357d9ed3099e59610deb8a6dd1ac8f9fa8e 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Written by Curtis Olson, started November 1999.
 //
-// Copyright (C) 1999  Curtis L. Olson - curt@flightgear.org
+// Copyright (C) 1999  Curtis L. Olson - http://www.flightgear.org/~curt
 //
 // This program is free software; you can redistribute it and/or
 // modify it under the terms of the GNU General Public License as
@@ -16,7 +16,7 @@
 //
 // 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$
 
 #define _PROTOCOL_HXX
 
 
-#include "Include/compiler.h"
+#include <simgear/compiler.h>
+#include <simgear/io/iochannel.hxx>
 
-#include STL_STRING
+#include <string>
 #include <vector>
 
-FG_USING_STD(string);
-FG_USING_STD(vector);
+using std::string;
+using std::vector;
 
 
 #define FG_MAX_MSG_SIZE 16384
 
-// forward declaration
-class FGIOChannel;
-
-
 class FGProtocol {
 
-public:
-
-    enum fgProtocolDir {
-       none = 0,
-       in = 1,
-       out = 2,
-       bi = 3
-    };
-
 private:
 
     double hz;
-    int count_down;
+    double count_down;
+    long count;
 
-    fgProtocolDir dir;
+    SGProtocolDir dir;
 
     // string protocol_str;
 
@@ -65,7 +54,7 @@ private:
 
     bool enabled;
 
-    FGIOChannel *io;
+    SGIOChannel *io;
 
 public:
 
@@ -76,24 +65,17 @@ public:
     virtual bool process();
     virtual bool close();
 
-    inline fgProtocolDir get_direction() const { return dir; }
-    inline void set_direction( const string& d ) {
-       if ( d == "in" ) {
-           dir = in;
-       } else if ( d == "out" ) {
-           dir = out;
-       } else if ( d == "bi" ) {
-           dir = bi;
-       } else {
-           dir = none;
-       }
-    }
+    inline SGProtocolDir get_direction() const { return dir; }
+    void set_direction( const string& d );
 
     inline double get_hz() const { return hz; }
     inline void set_hz( double t ) { hz = t; }
-    inline int get_count_down() const { return count_down; }
-    inline void set_count_down( int c ) { count_down = c; }
-    inline void dec_count_down( int c ) { count_down -= c; }
+    inline double get_count_down() const { return count_down; }
+    inline void set_count_down( double c ) { count_down = c; }
+    inline void inc_count_down( double amt ) { count_down += amt; }
+    inline void dec_count_down( double amt ) { count_down -= amt; }
+    inline void inc_count() { count++; }
+    inline long get_count() { return count; }
 
     virtual bool gen_message();
     virtual bool parse_message();
@@ -108,8 +90,8 @@ public:
     inline bool is_enabled() const { return enabled; }
     inline void set_enabled( const bool b ) { enabled = b; }
 
-    inline FGIOChannel *get_io_channel() const { return io; }
-    inline void set_io_channel( FGIOChannel *c ) { io = c; }
+    inline SGIOChannel *get_io_channel() const { return io; }
+    inline void set_io_channel( SGIOChannel *c ) { io = c; }
 };
 
 
@@ -117,6 +99,18 @@ typedef vector < FGProtocol * > io_container;
 typedef io_container::iterator io_iterator;
 typedef io_container::const_iterator const_io_iterator;
 
+#include <stdexcept>
+using std::invalid_argument;
+
+//namespace flightgear { namespace network {
+class FGProtocolConfigError : public invalid_argument
+{
+public:
+    FGProtocolConfigError( const string& what_string )
+       : invalid_argument(what_string) {}
+};
+//}} // end namespace flightgear::network
+
 
 #endif // _PROTOCOL_HXX