---
# System prepended metadata

title: LabDataManager

---

# LabDataManager

[TOC]


## Intro
實驗室遊戲模組都會需要採集實驗數據 (e.g. 腦電、呼吸、眼動等)，要把這些數據記錄下來就要透過這個 class。


一般要傳資料會呼叫 `GameDataManager.LabDataManager.SendData(DATA);`，其中 `DATA` 是繼承自 `LabDataBase`。


## Properties

## Methods

### `Queue2Send()`
獨立於一個 Thread 執行，持續偵測 `_dataQueue` 有沒有新的資料進來，如果有就把他們 dequeue **分別**呼叫 `DoOnce`  寫檔。

### `DoOnce(LabDataBase)`
呼叫 `DataWriterFunc` 寫檔、如果要上傳伺服器也會同時呼叫 `Scope.Send`。

### `DataWriterFunc(LabDataBase)`
先判斷繼承 LabDataBase 的類型，依照這個類型在 `_dataWriterDic`尋找對應的寫檔器 (`LabDataWriter`)。
如果沒有，判斷寫檔檔名後，依檔名建立一個寫檔器 `LabDataWriter` 。
執行 `Send` 正式寫檔。

### `StartUpload()`
==DataSync 遠端寫檔相關，跳過==

### `StopUpload()`
==DataSync 遠端寫檔相關，跳過==

## Classes