-
Notifications
You must be signed in to change notification settings - Fork 1
MultipeerConnectivity Callback
Forest Lee edited this page Dec 3, 2024
·
1 revision
- 키워드: Progress, Actor, Continuation
MultipeerConectivity는 연결된 피어에게 데이터를 전송하는 여러 방법이 있음. 팀은 그중 sendResource() 를 사용하기로 결정했음. 동영상 동시 편집을 위해 한번에 다수의 피어에게 파일을 전송하고 있음. 이때 피어들의 정상적인 수신은 동시 편집을 시작할 수 있는 조건임. 때문에 앱의 정삭적인 기능을 위해 파일 전송 완료를 파악하는 것은 서비스에서 중요했음.
sendResource()를 통해 데이터를 전송했을 때, 전송 완료/실패는 2가지가 경로를 통해 알 수 있음.
- sendResource의 반환 타입은 Progress?(옵셔널) 이고, nil이면 전송 시작에 실패했다는 것
- sendResource에 부착한 완료 핸들러를 통해 Error?를 받을 수 있고, Error != nil이면 전송 완료에 실패했다는 것
sendResource()는 Asynchronous Nonblocking (≠async) 함수이기 때문에, 완료는 여러 스레드에서 동시에 발생할 수 있음. 따라서 작업의 완료를 세는 Actor 타입의 Counter를 만들어 완료 핸들러를 통해 각 작업의 완료를 검사했음. 또한 병렬적인 sendResource() 호출 전체를 Continuation으로 감싸 완료, 실패 여부를 반환할 수 있도록 했음