server tick

git-svn-id: svn://elaine/murooma/trunk@107 d8a302eb-03bc-478d-80e4-98257eca68ef
This commit is contained in:
(no author) 2014-07-27 13:25:52 +00:00
parent 9c06a55331
commit 29d7fd372f
2 changed files with 15 additions and 9 deletions

View file

@ -30,9 +30,8 @@ int main () {
char c[2]; char c[2];
Chunk* chunk = new Chunk(); Chunk* chunk = new Chunk();
timeval start; timeval tvChunk;
timeval now; gettimeofday(&tvChunk, NULL);
gettimeofday(&start, NULL);
long nextTick = getTickCount(); long nextTick = getTickCount();
while (cin.good()) while (cin.good())
{ {
@ -43,23 +42,25 @@ int main () {
chunk->payload[n] = (int)c[0] + ((int)c[1] * 256); chunk->payload[n] = (int)c[0] + ((int)c[1] * 256);
} }
chunk->tv_sec = start.tv_sec; chunk->tv_sec = tvChunk.tv_sec;
chunk->tv_usec = start.tv_usec; chunk->tv_usec = tvChunk.tv_usec;
chunk->idx = 0; chunk->idx = 0;
zmq::message_t message(sizeof(Chunk)); zmq::message_t message(sizeof(Chunk));
memcpy(message.data(), chunk, sizeof(Chunk)); memcpy(message.data(), chunk, sizeof(Chunk));
publisher.send(message); publisher.send(message);
addMs(start, WIRE_CHUNK_MS); addMs(tvChunk, WIRE_CHUNK_MS);
nextTick += WIRE_CHUNK_MS;
long currentTick = getTickCount(); long currentTick = getTickCount();
if (nextTick - currentTick > 0) if (nextTick - currentTick > 0)
{ {
usleep((nextTick - currentTick) * 1000); usleep((nextTick - currentTick) * 1000);
} }
else else
gettimeofday(&start, NULL); {
gettimeofday(&tvChunk, NULL);
nextTick += WIRE_CHUNK_MS; nextTick = getTickCount();
}
} }
delete chunk; delete chunk;
return 0; return 0;

View file

@ -153,6 +153,7 @@ void Stream::getChunk(short* outputBuffer, double outputBufferDacTime, unsigned
{ {
// std::cerr << "Sleep: " << sleep << "\n"; // std::cerr << "Sleep: " << sleep << "\n";
getNextPlayerChunk(outputBuffer); getNextPlayerChunk(outputBuffer);
usleep(10);
} }
sleep = 0; sleep = 0;
} }
@ -203,7 +204,11 @@ void Stream::getChunk(short* outputBuffer, double outputBufferDacTime, unsigned
// sleep = median; // sleep = median;
//sleep = 0; //sleep = 0;
if (sleep != 0) if (sleep != 0)
{
std::cerr << "Sleep: " << sleep << "\n"; std::cerr << "Sleep: " << sleep << "\n";
for (size_t i=0; i<chunks.size(); ++i)
std::cerr << "Chunk " << i << ": " << getAge(chunks[i]) - bufferMs << "\n";
}
//sleep = 0; //sleep = 0;
std::cerr << "Chunk: " << age << "\t" << shortMedian << "\t" << median << "\t" << pBuffer->size() << "\t" << outputBufferDacTime*1000 << "\n"; std::cerr << "Chunk: " << age << "\t" << shortMedian << "\t" << median << "\t" << pBuffer->size() << "\t" << outputBufferDacTime*1000 << "\n";
} }