00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
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
00044 #include <iostream.h>
00045 #endif
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
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
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
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 }