1. machine state typedef enum eEN_CLIENT_MACHINE_STATE { /* common */ CT_IDLE = 1, CT_LOGIN, CT_SECTION, CT_CLOSE, /* sender */ CT_LOCAL_COMMAND, CT_CLIENT_COMMAND, /* receiver */ CT_LOGIN_WAIT, CT_FRED_WAIT, CT_LOCAL_WAIT, CT_CLIENT_WAIT } EN_CLIENT_MACHINE_STATE; 2. machine state cycle CT_IDLE (Ãʱâ»óÅÂ) CT_LOGIN (Á¦¾î±â·ÎºÎÅÍ AI_Initiate ¸í·ÉÀ» ¼ö½ÅÇÑ °æ¿ì ¶Ç´Â CT_IDLE »óÅ¿¡¼­ ŸÀӾƿô) CT_LOGIN_WAIT (Á¦¾î±â·Î AI_Login ¸í·ÉÀ» Àü¼ÛÇÑ ÈÄ) CT_IDLE (CT_LOGIN_WAIT »óÅ¿¡¼­ ÀÀ´ä ŸÀӾƿô ½Ã°£À϶§) CT_CLOSE (CT_LOGIN_WAIT »óÅ¿¡¼­ ÀÀ´ä ŸÀӾƿô ½Ã°£°ú ÀçÀü¼Û Ƚ¼ö ÀÌ»óÀ϶§) CT_SECTION (Á¦¾î±â·Î ºÎÅÍ AI_Login ÀÀ´äÀ¸·Î Accept¸¦ ¼ö½ÅÇÑ °æ¿ì) CT_IDLE (Á¦¾î±â·Î ºÎÅÍ AI_Login ÀÀ´äÀ¸·Î Reject¸¦ ¼ö½ÅÇÑ °æ¿ì) 2.1 °¢ »óź° »óÅÂÀüÀÌ ´Ü°è CT_IDLE - CT_CLOSE (·Î±×ÀÎ ¿äûÈÄ ÀÀ´äÀÌ ¾øÀÌ Àç½ÃµµÃ˜¼ö°¡ Áö³µÀ» °æ¿ì) - CT_LOGIN (·Î±×ÀÎ ¿äûÈÄ ÀÀ´äÀÌ ·Î±×ÀÎ ´ë±â ½Ã°£º¸´Ù Ŭ °æ¿ì) CT_LOGIN - CT_LOGIN_WAIT (Á¦¾î±â·Î ·Î±×ÀÎ ¿äûÀ» Àü¼Û ÇÑ ÈÄ - AI_Login) - CT_CLOSE (Á¦¾î±â·Î ·Î±×ÀÎ ¿äûÀ» Àç½Ãµµ Ƚ¼öº¸´Ù ¿äûÇÏÁö ¸øÇÑ °æ¿ì) CT_SECTION - CT_CLOSE (*WatchDogTimer°¡ ŸÀӾƿô µÈ °æ¿ì) - CT_FRED_WAIT (+Á¦¾î±â·Î ºÎÅÍ ¸¶Áö¸·À¸·Î ¼ö½ÅÇÑ ½Ã°¢ÀÌ MaxHeartbeatTime/3 º¸´Ù Å«°æ¿ì AI_FrED ¸í·É Àü¼Û ¼º°ø) - CT_CLOSE (+Á¦¾î±â·Î ºÎÅÍ ¸¶Áö¸·À¸·Î ¼ö½ÅÇÑ ½Ã°¢ÀÌ MaxHeartbeatTime/3 º¸´Ù Å«°æ¿ì AI_FrED ¸í·É Àü¼Û ½ÇÆÐ - Àç½ÃµµÈ½¼ö Ãʰú) - CT_LOCAL_COMMAND (-¸¶Áö¸· Á¤º¸ ¼öÁý½Ã°¢ÀÌ ¼öÁýÁֱ⠺¸´Ù Å«°æ¿ì: »óÅÂÁ¤º¸ ¿äû Ç÷¡±× ÃʱâÈ­) - CT_LOCAL_COMMAND (-¸¶Áö¸· Á¤º¸ ¼öÁý½Ã°¢ÀÌ ¼öÁýÁֱ⠺¸´Ù ÀÛÀº°æ¿ì) CT_CLOSE - Terminate CT_LOCAL_COMMAND - CT_CLIENT_COMMAND (»óÅÂÁ¤º¸ ¿äû Ç÷¡±× È®Àΰá°ú ¿äûÇÒ Çʿ䰡 ¾ø´Â °æ¿ì) - CT_LOCAL_WAIT (»óÅÂÁ¤º¸ ¿äû Ç÷¡±× È®Àΰá°ú »óÅÂÁ¤º¸ ¿äûÀÌ ¼º°øÇÑ °æ¿ì) - CT_CLOSE (»óÅÂÁ¤º¸ ¿äû Ç÷¡±× È®Àΰá°ú »óÅÂÁ¤º¸ ¿äûÀÌ ½ÇÆÐÇϰí Àç½Ãµµ Ƚ¼ö¸¦ ÃʰúÇÑ °æ¿ì) CT_CLIENT_COMMAND - CT_CLIENT_WAIT (¿î¿µ´Ü¸»ÀÇ ¿äûÀÌ ÀÖ´Â °æ¿ì ÇØ´ç ¿äûÀ» Á¦¾î±â·Î Àü¼Û ¼º°øÇÑ °æ¿ì - VMS Client ¸ðµâ¿¡¼­´Â ÇØ´ç»çÇ× ¾øÀ½) - CT_CLOSE (¿î¿µ´Ü¸»ÀÇ ¿äûÀÌ ÀÖ´Â °æ¿ì ÇØ´ç ¿äûÀÌ ½ÇÆÐÇϰí Àç½Ãµµ Ƚ¼ö¸¦ ÃʰúÇÑ °æ¿ì - VMS Client ¸ðµâ¿¡¼­´Â ÇØ´ç»çÇ× ¾øÀ½) - CT_SECTION (¿î¿µ´Ü¸»ÀÇ ¿äûÀÌ ¾ø´Â °æ¿ì - VMS Client ¸ðµâ¿¡¼­´Â Ç×»ó ÀÌ»óÅ·Πº¯°æµÊ) CT_LOGIN_WAIT - CT_IDLE (Á¦¾î±â·Î ¸í·É Àü¼Û ÈÄ ÀÀ´ä ŸÀӾƿô ½Ã°£ º¸´Ù Ŭ°æ¿ì-¸í·ÉÀü¼Û ŸÀӾƿô, Áï ¸í·ÉÀü¼Û ½ÇÆÐ) - CT_CLOSE (Á¦¾î±â·Î ¸í·É Àü¼Û ÈÄ ÀÀ´ä ŸÀӾƿô ½Ã°£ º¸´Ù Ŭ°æ¿ì-¸í·ÉÀü¼Û ŸÀӾƿô, Áï ¸í·ÉÀü¼Û ½ÇÆÐ && Àç½Ãµµ Ƚ¼ö Ãʰú) CT_FRED_WAIT - CT_SECTION (Á¦¾î±â·Î ¸í·É Àü¼Û ÈÄ ÀÀ´ä ŸÀӾƿô ½Ã°£ º¸´Ù Ŭ°æ¿ì-¸í·ÉÀü¼Û ŸÀӾƿô, Áï ¸í·ÉÀü¼Û ½ÇÆÐ) - CT_CLOSE (Á¦¾î±â·Î ¸í·É Àü¼Û ÈÄ ÀÀ´ä ŸÀӾƿô ½Ã°£ º¸´Ù Ŭ°æ¿ì-¸í·ÉÀü¼Û ŸÀӾƿô, Áï ¸í·ÉÀü¼Û ½ÇÆÐ && Àç½Ãµµ Ƚ¼ö Ãʰú) CT_LOCAL_WAIT - CT_LOCAL_COMMAND (Á¦¾î±â·Î ¸í·É Àü¼Û ÈÄ ÀÀ´ä ŸÀӾƿô ½Ã°£ º¸´Ù Ŭ°æ¿ì-¸í·ÉÀü¼Û ŸÀӾƿô, Áï ¸í·ÉÀü¼Û ½ÇÆÐ) - CT_CLOSE (Á¦¾î±â·Î ¸í·É Àü¼Û ÈÄ ÀÀ´ä ŸÀӾƿô ½Ã°£ º¸´Ù Ŭ°æ¿ì-¸í·ÉÀü¼Û ŸÀӾƿô, Áï ¸í·ÉÀü¼Û ½ÇÆÐ && Àç½Ãµµ Ƚ¼ö Ãʰú) CT_CLIENT_WAIT - CT_CLIENT_COMMAND (Á¦¾î±â·Î ¸í·É Àü¼Û ÈÄ ÀÀ´ä ŸÀӾƿô ½Ã°£ º¸´Ù Ŭ°æ¿ì-¸í·ÉÀü¼Û ŸÀӾƿô, Áï ¸í·ÉÀü¼Û ½ÇÆÐ) - CT_CLOSE (Á¦¾î±â·Î ¸í·É Àü¼Û ÈÄ ÀÀ´ä ŸÀӾƿô ½Ã°£ º¸´Ù Ŭ°æ¿ì-¸í·ÉÀü¼Û ŸÀӾƿô, Áï ¸í·ÉÀü¼Û ½ÇÆÐ && Àç½Ãµµ Ƚ¼ö Ãʰú) 2.2 Á¦¾î±â ¼Û¼ö½Å¿¡ µû¸¥ »óÅ ÀüÀÌ CT_LOGIN_WAIT - CT_SECTION (¼Û¼ö½Å ¼º°ø) - CT_IDLE (¼Û¼ö½Å ½ÇÆÐ) CT_FRED_WAIT - CT_SECTION (¼Û¼ö½Å ¼º°ø/½ÇÆÐ¿Í »ó°ü ¾øÀ½) CT_LOCAL_WAIT - CT_CLIENT_COMMAND (¼Û¼ö½Å ¼º°ø) - CT_LOCAL_COMMAND (¼Û¼ö½Å ½ÇÆÐ) CT_CLIENT_WAIT - CT_SECTION (¼Û¼ö½Å ¼º°ø) - CT_CLIENT_COMMAND (¼Û¼ö½Å ½ÇÆÐ) ProcessCommand - AI_FrED ¿¡¼­ arg °¡ NULL ·Î ³Ñ¾î¿À´Âµ¥ ÇÔ¼öÈ£Ãâ¿¡¼­ »ç¿ëÇϰí ÀÖÀ½(¸Þ¸ð¸® ¿À·ù È®ÀÎ ÇÊ¿ä)