./tooth-backend serve \
--control stdio \
--mjpeg-host 127.0.0.1 \
--mjpeg-port 39010--control は stdio を指定する。
MJPEG hostは 127.0.0.1 を使う。
stdoutへJPEG bytesを出さない。
MJPEG serverのlisten開始後、serve appはstdoutへready eventを1行出す。
{"event":"ready","version":"0.1.0"}ready eventを受け取る前にcamera commandを送らない。
stdout:
responseとeventをJSON Linesで出力する。
stderr:
logger、OpenCV診断、process障害情報を出力する。
stdinへ1行1JSONでrequestを送る。
{"id":"1","cmd":"ping"}| field | 必須 | 説明 |
|---|---|---|
id |
必須 | request ID。returnに同じ値を入れる。 |
cmd |
必須 | command名。 |
{"id":"1","ok":true}command固有のfieldを追加する。
{"id":"2","ok":false,"error":{"code":"camera_open_failed","message":"failed to open camera 0"}}| field | 説明 |
|---|---|
id |
request ID。 |
ok |
false。 |
error.code |
error code。 |
error.message |
error message。 |
JSONをparseできない場合、id を省略できる。
{"ok":false,"error":{"code":"invalid_json","message":"failed to parse JSON"}}{"event":"stream_started","role":"left","url":"http://127.0.0.1:39010/left.mjpg"}eventは非同期通知である。 eventはrequestへのreturnではない。
role left と right のURL例である。
http://127.0.0.1:39010/left.mjpg
http://127.0.0.1:39010/right.mjpg
HTTP responseはmultipart MJPEGである。
Content-Type: multipart/x-mixed-replace; boundary=frame未登録または停止中のroleはHTTP 404を返す。
endpoint名に使えるrole文字は英数字、_、- である。
JSON Linesの疎通を確認する。
{"id":"1","cmd":"ping"}{"id":"1","ok":true,"result":"pong"}なし。
なし。
なし。
serve app。
| code | 条件 |
|---|---|
missing_field |
id または cmd がない。 |
invalid_json |
JSONをparseできない。 |
serve appの終了を要求する。
{"id":"10","cmd":"shutdown"}{"id":"10","ok":true}scan停止中のeventが残っている場合は出力される。
なし。
なし。
serve app。
| code | 条件 |
|---|---|
internal_error |
終了処理中に未処理例外が発生した。 |
pingshutdownopen_cameraclose_camerastart_streamstop_streamcapture_framecapture_stereocalib_capture_framecalib_capture_stereomono_calibratestereo_calibrateopen_windowclose_windowlist_monitorsconfigure_projector_surfaceopen_projectorclose_projectorgenerate_patternsshow_patternnext_patternprev_patternscan_startscan_statusscan_stopscan_validatedecode_patternsreconstruct_validatereconstruct_point_cloud
なし