00001 // Copyright (C) 2004 Pablo Mejia 00002 00003 00004 #ifndef CAJUN_SURESHOT_H 00005 #define CAJUN_SURESHOT_H 00006 00007 00008 namespace cajun 00009 { 00010 class input_buffer_t; 00011 00012 class sureshot_t 00013 { 00014 public: 00015 sureshot_t (int fd); 00016 ~sureshot_t (); 00017 00018 class observer_t 00019 { 00020 public: 00021 enum sureshot_message_t 00022 { 00023 STATUS_FULL_BUFFER, 00024 STATUS_GARBAGE_DATA 00025 }; 00026 00027 virtual ~observer_t () {} 00028 00029 virtual void publish_status (double tstamp, 00030 unsigned status) {} 00031 virtual void range (double tstamp, double range) {} 00032 }; 00033 00034 void register_observer (observer_t *observer) 00035 { 00036 m_observer = observer; 00037 } 00038 00039 void handle_input (void); 00040 00041 protected: 00042 int m_fd; 00043 input_buffer_t *m_ib; 00044 00045 observer_t *m_observer; 00046 }; 00047 }; 00048 00049 00050 #endif