Main Page | Class Hierarchy | Class List | File List | Class Members

QAvatar.cxx

00001 
00002 //
00003 // $Id: QAvatar.cxx,v 1.7 2004/03/26 20:56:19 scharver Exp $
00004 //
00005 // Author: Chris Scharver
00006 // Email: scharver@evl.uic.edu
00007 // Copyright (c) 2003 Electronic Visualization Laboratory,
00008 //                    University of Illinois at Chicago
00009 //
00010 // Permission is hereby granted, free of charge, to any person
00011 // obtaining a copy of this software and associated documentation
00012 // files (the "Software"), to deal in the Software without
00013 // restriction, including without limitation the rights to use, copy,
00014 // modify, merge, publish, distribute, sublicense, and/or sell copies
00015 // of the Software, and to permit persons to whom the Software is
00016 // furnished to do so, subject to the following conditions:
00017 //
00018 // The above copyright notice and this permission notice shall be
00019 // included in all copies or substantial portions of the Software.
00020 //
00021 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00022 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00023 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00024 // NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
00025 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
00026 // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00027 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00028 // DEALINGS IN THE SOFTWARE.
00029 //
00031 
00032 #include <QAvatar.h>
00033 
00034 #include <assert.h>
00035 #include <string.h>
00036 #include <QUANTA/QUANTAnet_socketbase_c.hxx>
00037 #include <QUANTA/QUANTAts_mutex_c.hxx>
00038 
00039 #ifdef USE_STL_NAMESPACE
00040 #include <iostream>
00041 using std::cerr;
00042 using std::endl;
00043 #else /* USE_STL_NAMESPACE */
00044 #include <iostream.h>
00045 #endif /* USE_STL_NAMESPACE */
00046 
00047 QAvatar::QAvatar(const long& avID)
00048   : m_id(avID), m_lastUpdateTime(0.0), m_mutex(new QUANTAts_mutex_c),
00049     m_auxSize(0), m_helloSize(0), m_trackerSize(0),
00050     m_auxData(NULL), m_helloData(NULL), m_trackerData(NULL)
00051 {
00052 }
00053 
00066 QAvatar::QAvatar(const long& avID, const size_t& auxSize,
00067          const size_t& helloSize, const size_t& trackerSize)
00068   : m_id(avID), m_lastUpdateTime(0.0), m_mutex(new QUANTAts_mutex_c),
00069     m_auxSize(auxSize), m_helloSize(helloSize), m_trackerSize(trackerSize),
00070     m_auxData(NULL), m_helloData(NULL), m_trackerData(NULL)
00071 {
00072 }
00073 
00077 QAvatar::~QAvatar()
00078 {
00079   delete m_mutex;
00080   delete[] m_auxData;
00081   delete[] m_helloData;
00082   delete[] m_trackerData;
00083 }
00084 
00085 void
00086 QAvatar::lock()
00087 {
00088   assert(m_mutex != NULL);
00089   m_mutex->lock();
00090 }
00091 
00092 void
00093 QAvatar::unlock()
00094 {
00095   assert(m_mutex != NULL);
00096   m_mutex->unlock();
00097 }
00098 
00099 long
00100 QAvatar::getID()
00101 {
00102   return m_id;
00103 }
00104 
00105 char*
00106 QAvatar::getAuxData()
00107 {
00108   return m_auxData;
00109 }
00110 
00111 size_t
00112 QAvatar::getAuxDataSize()
00113 {
00114   return m_auxSize;
00115 }
00116 
00117 char*
00118 QAvatar::getHelloData()
00119 {
00120   return m_helloData;
00121 }
00122 
00123 size_t
00124 QAvatar::getHelloDataSize()
00125 {
00126   return m_helloSize;
00127 }
00128 
00129 char*
00130 QAvatar::getTrackerData()
00131 {
00132   return m_trackerData;
00133 }
00134 
00135 size_t
00136 QAvatar::getTrackerDataSize()
00137 {
00138   return m_trackerSize;
00139 }
00140 
00147 void
00148 QAvatar::setAuxData(const char* dataBuffer, const size_t& dataSize)
00149 {
00150   if (!m_auxData) {
00151     //m_auxSize = dataSize;
00152     m_auxData = new char[m_auxSize];
00153   } else if (m_auxSize < dataSize) {
00154     cerr << "AVATAR WARNING: aux data truncated" << endl;
00155   }
00156   memcpy(m_auxData, dataBuffer, m_auxSize);
00157 }
00158 
00165 void
00166 QAvatar::setHelloData(const char* dataBuffer, const size_t& dataSize)
00167 {
00168   if (!m_helloData) {
00169     //m_helloSize = dataSize;
00170     m_helloData = new char[m_helloSize];
00171   } else if (m_helloSize < dataSize) {
00172     cerr << "AVATAR WARNING: hello data truncated" << endl;
00173   }
00174   memcpy(m_helloData, dataBuffer, m_helloSize);
00175 }
00176 
00183 void
00184 QAvatar::setTrackerData(const char* dataBuffer, const size_t& dataSize)
00185 {
00186   if (!m_trackerData) {
00187     //m_trackerSize = dataSize;
00188     m_trackerData = new char[m_trackerSize];
00189   } else if (m_trackerSize < dataSize) {
00190     cerr << "AVATAR WARNING: tracker data truncated" << endl;
00191   }
00192   memcpy(m_trackerData, dataBuffer, m_trackerSize);
00193 }
00194 
00195 double
00196 QAvatar::getLastUpdateTime()
00197 {
00198   return m_lastUpdateTime;
00199 }
00200 
00201 void
00202 QAvatar::markUpdateTime()
00203 {
00204   m_lastUpdateTime = QUANTAnet_socketbase_c::getTimeInSecs();
00205 }

Generated on Tue Apr 13 16:42:25 2004 for QAvatar by doxygen 1.3.6