EventAssetAgent · 프레임→clip→업로드 — 상세 구조도
기준 커밋:
1398d109c391c4044cae26d0e9aea4d3f08d9670. 도식은 기존 구현을 설명한다. 제품 이미지 설치·실기기 성공을 증명하지 않는다.
별도 APK의 IEventAssetService · 자료 파이프라인과 callback 소유
SVG 원본 크게 열기 · Mermaid 원본 · 모듈 분석 본문
읽는 순서와 연결 의미
행은 책임·실행 경로별 묶음이며 별도 프로세스라는 뜻은 아니다. 같은 행의 인접 연결은 화살표로, 행을 넘거나 떨어진 상자 사이 연결은 동일한 E 번호의 출력·입력 포트로 표시한다. 아래 표는 방향과 의미를 모두 풀어 쓴 것이다. 그림의 코드 파일명을 눌러 저장소로 이동하는 기능은 없으며, 아래 경로로 지정 커밋을 조회할 수 있다.
| 연결 | 출발 → 도착 | 동작 | 종류 |
|---|---|---|---|
| E01 | RecordingAidlService → SKIXCameraBrokerClient | connect | 호출·명령 |
| E02 | SKIXCameraBrokerClient → RecordingManager | frame | 결과·이벤트 |
| E03 | RecordingManager → ClipRequestManager | finalize 결과 | 결과·이벤트 |
| E04 | ClipRequestManager → ClipAssetStore | asset 저장 | 데이터·구성 의존 |
| E05 | ClipRequestManager → ClipCallbackDispatcher | clip 상태 | 결과·이벤트 |
| E06 | ClipCallbackDispatcher → WssEventAssetManager | Binder event | 결과·이벤트 |
| E07 | RecordingAidlService → UploadRequestHandler | upload / cancel | 호출·명령 |
| E08 | UploadRequestHandler → ClipUploadService | start service | 호출·명령 |
| E09 | ClipUploadService → UploadExecutor | execute | 호출·명령 |
| E10 | UploadExecutor → UploadHttpClient | upload | 호출·명령 |
| E11 | ClipUploadService → UploadCallbackDispatcher | run 반환 후 dispatchFinished | 호출·명령 |
구성요소별 책임과 코드 근거
| 상자 | 구성요소 | 책임·상태 | 지정 커밋의 소스 경로 |
|---|---|---|---|
| N01 | RecordingAidlService | IEventAssetService / EventAssetIo / capture·clip·upload 입구 | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/RecordingAidlService.java |
| N02 | SKIXCameraBrokerClient | 외부 camera broker Binder / shared-memory frame 읽기 | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/broker/SKIXCameraBrokerClient.java |
| N03 | RecordingManager | prebuffer / audio·video / muxer / capture thread / finalizing | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/recording/RecordingManager.java |
| N04 | ClipRequestManager | 요청 queue / clip 수명 / finalized metadata 연결 | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/clip/ClipRequestManager.java |
| N05 | ClipAssetStore | 실제 asset 파일 / 유효성·조회·삭제 | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/storage/ClipAssetStore.java |
| N06 | ClipCallbackDispatcher | RemoteCallbackList / onClipStateChanged fan-out | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/callback/ClipCallbackDispatcher.java |
| N07 | WssEventAssetManager | DA의 검증·업로드 정책 / clip callback 소비 | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/wss/eventasset/WssEventAssetManager.java |
| N08 | UploadRequestHandler | upload / cancel 접수 / service 요청 구성 | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/upload/UploadRequestHandler.java |
| N09 | ClipUploadService | 업로드 생명주기 / UploadExecutor 시작 | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/upload/ClipUploadService.java |
| N10 | UploadExecutor | asset 검증 / upload 실행 / 취소·결과 처리 | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/upload/UploadExecutor.java |
| N11 | UploadHttpClient | HTTP upload / 원격 endpoint는 외부 | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/upload/UploadHttpClient.java |
| N12 | UploadCallbackDispatcher | DB 상태·retry 연계 / onUploadStateChanged | apps/EventAssetAgent/app/src/main/java/com/sk/airbot/eventassetagent/service/callback/UploadCallbackDispatcher.java |
해석 경계와 변경 시 검토
- stop 요청·finalize·metadata 저장·파일 재생·HTTP 성공은 서로 다른 단계다.
- 카메라 broker·encoder 하부 구현과 원격 저장 서버는 이 모듈 밖이다.
- 이 트리에는 EventAssetAgent의 Android.mk가 없다. 실제 이미지 탑재를 의미하지 않는다.