OSCCountCallable.h

00001 /* Open SoundControl kit in C++                                              */
00002 /* Copyright (C) 2002-2004 libOSC++ contributors. See AUTHORS                */
00003 /*                                                                           */
00004 /* This library is free software; you can redistribute it and/or             */
00005 /* modify it under the terms of the GNU Lesser General Public                */
00006 /* License as published by the Free Software Foundation; either              */
00007 /* version 2.1 of the License, or (at your option) any later version.        */
00008 /*                                                                           */
00009 /* This library is distributed in the hope that it will be useful,           */
00010 /* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
00011 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         */
00012 /* Lesser General Public License for more details.                           */
00013 /*                                                                           */
00014 /* You should have received a copy of the GNU Lesser General Public          */
00015 /* License along with this library; if not, write to the Free Software       */
00016 /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
00017 /*                                                                           */
00018 /* For questions regarding this program contact                              */
00019 /* Daniel Holth <dholth@fastmail.fm> or visit                                */
00020 /* http://wiretap.stetson.edu/                                               */
00021 
00031 #ifndef OSC_COUNT_CALLABLE_H
00032 #define OSC_COUNT_CALLABLE_H
00033 
00034 #include "OSCCallable.h"
00035 #include "OSCUnpacker.h"
00036 
00037 class OSCCountCallable : public OSCCallable
00038 {
00039   private:
00040     string message;
00041     int highest;
00042     int missed;
00043     OSCUnpacker *unpacker;
00044     
00045   public:
00046     OSCCountCallable(string message) { this->message = message; 
00047                                        this->highest = 0;
00048                                        this->missed  = 0; 
00049                                        this->unpacker = new OSCUnpacker(); }
00050     virtual ~OSCCountCallable()      { }
00051     
00052     virtual void call(const std::string& data, Transmit *const reply) 
00053     { 
00054       string address;
00055       string typetags;
00056       int report;
00057       
00058       this->unpacker->setData(data);
00059       this->unpacker->unpackString(&address);
00060       this->unpacker->unpackString(&typetags);
00061       this->unpacker->unpackInt(&report);
00062 
00063       if(report != this->highest + 1)
00064       {
00065         cout << this->message << " DISCREPANCY " 
00066           << (report - this->highest) << "\t" 
00067           << this->missed << endl;
00068 
00069         this->missed++;
00070       }
00071       
00072       if(report > this->highest) this->highest = report;
00073     }
00074 };
00075 
00076 #endif

Generated on Thu Mar 2 23:51:35 2006 for libOSC++ by  doxygen 1.4.6