C의 app 만들기 - 3 : app

지난 번에 이어 이번에는 app 자체를 만들어 보도록 하겠습니다. 이 app은 app manager에서 control 되며 각종 메시지 및 키 이벤트를 받습니다. 


우선 이해를 위해 지난 시간에 main.c의 코드를 다시 보도록 하겠습니다. 우리가 이번에 만들 app은 27번째 줄 setup_app_scene_1()에서 구현 됩니다. 실제 app의 포인터를 app manager에게 전달하는 부분이지요.



여러번 반복 되었지만, setup으로 시작하는 함수는 객체 인스턴스를 반환한다고 봐도 되겠군요. new로 시작해도 되구요, init으로 시작해도 상관 없습니다면 일관성만 갖춘다면 될거 같습니다.  그럼 app scene 1의 헤더 파일을 보도록 하겠습니다. 



main.c에서 호출하는 setup_app_scene_1()을 extern으로 선언해주었습니다. app_t에 대한 구체적인 함수들은 아래app_scene_1.c에서 구현될 것입니다. 25번줄 setup_app_scene_1()에서 this pointer로 넘겨주면 이 포인터는 app manger의 자료구조에 저장이 됩니다. 그리고 start_app을 통해 한개의 app이 먼저 실행되기 시작합니다. 실행된다고 표현하기에는 무리가 좀 있네요. thread는 아닙니다. message를 처리하는 하나의 단위라고 보면 되겠네요.



메시지와 키 이벤트가 발생했을 때 처리를 위한 callback 함수들이 있고, app이 만들어 질때와 시작할 때, 혹은 다른 app과 switching되어 stop 될 때 처리하는 함수들이 있습니다. 


app process를 요약하면 아래와 같습니다. 


1. main.c 에서 app들 을 생성하여 app manager 등록

2. app manager에서 app 등록시 해당 app on_create 실행

2. main.c 에서 등록된 app 중 하나를 선택하여 app manager에 start 명령

3. app manager는 해당 app의 on_start 실행 및 current app으로 설정

4. 무한루프에서 각종 메시지, 키 이벤트 수신시 app manager에 전달

5. app manager는 현재 current app에 메시지 및 키 이벤트 전달


메시지발생 -> app manger -> current app 수신 및 처리


이게 핵심입니다.









'▶ 이전글 > C Pattern' 카테고리의 다른 글

Adapter 패턴 - 1  (0) 2018.02.23
factory method 패턴  (0) 2018.01.31
C 언어에서 this 구현2  (0) 2018.01.27
C의 app 만들기 - 2 : main에서 실제 사용하기  (0) 2018.01.25
C의 app 만들기 - 1 : app manager  (0) 2018.01.24