Skip to content

Commit

Permalink
Remove queue impl
Browse files Browse the repository at this point in the history
  • Loading branch information
LunaTheFoxgirl committed Mar 27, 2022
1 parent 9ba42ed commit cc6704a
Showing 1 changed file with 21 additions and 30 deletions.
51 changes: 21 additions & 30 deletions source/ft/adaptors/vtsproto.d
Original file line number Diff line number Diff line change
Expand Up @@ -101,40 +101,34 @@ struct VTSRawTrackingData {
/**
Thread-safe queue for VTS tracking data
*/
struct VTSDataQueue {
struct VTSThreadSafeData {
private:
VTSRawTrackingData[] queue;
VTSRawTrackingData data;
Mutex mtx;
bool updated_;

public:
this(Mutex mutex) {
this.mtx = mutex;
}

void push(VTSRawTrackingData data) {
bool updated() {
mtx.lock();
queue ~= data;
mtx.unlock();
scope(exit) mtx.unlock();
return updated_;
}

size_t length() {
void set(VTSRawTrackingData data) {
mtx.lock();
size_t len = queue.length;
updated_ = true;
this.data = data;
mtx.unlock();

return len;
}

VTSRawTrackingData pop() {
VTSRawTrackingData data;

VTSRawTrackingData get() {
mtx.lock();
if (queue.length > 0) {
data = queue[0];
queue.length--;
} else data = VTSRawTrackingData.init;
mtx.unlock();

updated_ = false;
scope(exit) mtx.unlock();
return data;
}
}
Expand All @@ -156,7 +150,7 @@ private:
// Data
size_t dataPacketsReceivedTotal;
size_t dataPacketsReceivedInLastSecond;
VTSDataQueue* queue;
VTSThreadSafeData tsdata;

// Settings
string appName = "facetrack-d";
Expand All @@ -182,8 +176,7 @@ private:
while (!isCloseRequested) {
try {
ptrdiff_t recvBytes = vtsIn.receiveFrom(buff, SocketFlags.NONE, addr);

if (recvBytes <= buff.length) {
if (recvBytes != Socket.ERROR && recvBytes <= buff.length) {
string recvString = cast(string)buff[0..recvBytes];
auto trackingData = deserialize!VTSRawTrackingData(parseJson(recvString));

Expand All @@ -192,8 +185,7 @@ private:
trackingData.blendShapesDict[blendshapeKV.key] = blendshapeKV.value;
}

queue.push(trackingData);
Thread.sleep(16.msecs);
tsdata.set(trackingData);
}
} catch (Exception ex) {
Thread.sleep(100.msecs);
Expand Down Expand Up @@ -242,13 +234,12 @@ public:

// Start our new threading
isCloseRequested = false;
queue = new VTSDataQueue(new Mutex());
tsdata = VTSThreadSafeData(new Mutex());

vtsOut = new UdpSocket();
vtsOut.blocking = false;

vtsOut.setOption(SocketOptionLevel.SOCKET, SocketOption.SNDTIMEO, 16.msecs);
vtsIn = new UdpSocket();
vtsIn.blocking = false;
vtsIn.setOption(SocketOptionLevel.SOCKET, SocketOption.RCVTIMEO, 16.msecs);
vtsIn.bind(new InternetAddress(vtsBind, vtsPort));

// Reset PPS counter
Expand Down Expand Up @@ -283,14 +274,13 @@ public:
listeningThread = null;
vtsIn = null;
vtsOut = null;
queue = null;
}
}

override
void poll() {
if (queue.length > 0) {
VTSRawTrackingData data = queue.pop();
if (tsdata.updated) {
VTSRawTrackingData data = tsdata.get();

bones[BoneNames.ftHead] = Bone(
vec3(data.position.x*-1, data.position.y, data.position.z),
Expand All @@ -305,6 +295,7 @@ public:
override
string[] getOptionNames() {
return [
"phoneIP",
"appName"
];
}
Expand Down

0 comments on commit cc6704a

Please sign in to comment.