Mediastreamer2 VoIP แƒซแƒ แƒแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 11

แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ›แƒแƒกแƒแƒšแƒ แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฉแƒ”แƒ›แƒ˜ แƒ–แƒ”แƒœ แƒแƒ แƒฎแƒ˜.

Mediastreamer2 VoIP แƒซแƒ แƒแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 11

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒแƒ“แƒ’แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜

  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜ dblk_t
  • แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ mblk_t
  • mblk_t แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜
  • แƒ แƒ˜แƒ’แƒ˜ queue_t
  • แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ queue_t
  • แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ
  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜
  • แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒแƒฅแƒ›แƒ˜แƒแƒœแƒแƒ‘แƒ แƒ™แƒฃแƒšแƒ˜แƒกแƒ”แƒ‘แƒจแƒ˜
  • แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ (MSBufferizer)
  • MSBufferizer-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜

แฒ‘แƒแƒšแƒแƒก แƒ›แƒฃแƒฎแƒšแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒคแƒ˜แƒšแƒขแƒ แƒ˜. แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒแƒก แƒ’แƒแƒแƒ›แƒแƒฎแƒ•แƒ˜แƒšแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒแƒ“แƒ’แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ˜แƒ“แƒ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ–แƒ” แƒ›แƒ”แƒ“แƒ˜แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก. แƒ”แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒ“แƒแƒฎแƒ•แƒ”แƒฌแƒ˜แƒšแƒ˜ แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒซแƒแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜แƒ—.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒแƒ“แƒ’แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒแƒ“แƒ’แƒ˜แƒšแƒ”แƒ‘แƒ แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒจแƒ˜ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ แƒ˜แƒ’แƒ˜_แƒข. แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ mblk_t, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“ แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒก แƒฌแƒ˜แƒœแƒ, แƒ›แƒแƒ›แƒ“แƒ”แƒ•แƒœแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ—แƒแƒœ. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ›แƒ˜แƒœแƒ“แƒ แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒฎแƒแƒ–แƒ’แƒแƒกแƒ›แƒ˜แƒ— แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ, แƒ แƒแƒ› แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜แƒก แƒ•แƒ”แƒšแƒ˜ แƒ˜แƒ›แƒแƒ•แƒ” แƒขแƒ˜แƒžแƒ˜แƒก แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ›แƒแƒแƒฌแƒงแƒแƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒชแƒแƒšแƒ›แƒฎแƒ แƒ˜แƒ•แƒแƒ“ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ. แƒแƒกแƒ”แƒ—แƒ˜ แƒกแƒ˜แƒ˜แƒ— แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒฃแƒš แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฏแƒ’แƒฃแƒคแƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ— แƒขแƒแƒžแƒก. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ แƒ˜แƒ’แƒ˜แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ mblk_t, แƒ“แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ›แƒ”แƒกแƒ˜แƒฏแƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ˜ mblk_t. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ›แƒ”แƒกแƒ˜แƒฏแƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒžแƒแƒšแƒแƒขแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜. แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒขแƒฃแƒžแƒšแƒ”แƒ‘แƒ˜ แƒชแƒแƒขแƒ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ—.

แƒ แƒแƒ’แƒแƒ แƒช แƒ–แƒ”แƒ›แƒแƒ— แƒแƒฆแƒ˜แƒœแƒ˜แƒจแƒœแƒ, แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“ แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒก; แƒกแƒแƒ›แƒแƒ’แƒ˜แƒ”แƒ แƒแƒ“, แƒ˜แƒก แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒ”แƒ–แƒ”, แƒกแƒแƒ“แƒแƒช แƒ‘แƒšแƒแƒ™แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ. แƒแƒ› แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜, แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ›แƒแƒ’แƒ•แƒแƒ’แƒแƒœแƒ”แƒ‘แƒก แƒ™แƒแƒ แƒ˜แƒก แƒกแƒแƒฌแƒงแƒแƒ‘แƒก แƒ›แƒฃแƒšแƒขแƒคแƒ˜แƒšแƒ›แƒจแƒ˜ "Monsters, Inc.", แƒกแƒแƒ“แƒแƒช แƒ™แƒแƒ แƒ”แƒ‘แƒ˜ (แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜ - แƒแƒ—แƒแƒฎแƒ”แƒ‘แƒ˜) แƒ’แƒ˜แƒŸแƒฃแƒ แƒ˜ แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒ— แƒ›แƒแƒซแƒ แƒแƒแƒ‘แƒ”แƒœ แƒ–แƒ”แƒ“แƒ แƒ™แƒแƒœแƒ•แƒ”แƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒฌแƒ•แƒ แƒ˜แƒ•, แƒฎแƒแƒšแƒ แƒ—แƒแƒ•แƒแƒ“ แƒแƒ—แƒแƒฎแƒ”แƒ‘แƒ˜. แƒ“แƒแƒ แƒฉแƒ”แƒก แƒฃแƒ›แƒแƒซแƒ แƒแƒแƒ“.

แƒแƒฎแƒšแƒ, แƒ˜แƒ”แƒ แƒแƒ แƒฅแƒ˜แƒ˜แƒก แƒ’แƒแƒกแƒฌแƒ•แƒ แƒ˜แƒ• แƒฅแƒ•แƒ”แƒ›แƒแƒ“แƒแƒœ แƒ–แƒ”แƒ•แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒแƒ“แƒ’แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜แƒก แƒฉแƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒšแƒ˜ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒจแƒ˜.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜ dblk_t

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒกแƒ’แƒแƒœ. แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒ—,

typedef struct datab
{
unsigned char *db_base; // ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ะฝะฐั‡ะฐะปะพ ะฑัƒั„ะตั€ ะดะฐะฝะฝั‹ั….
unsigned char *db_lim;  // ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ะบะพะฝะตั† ะฑัƒั„ะตั€ ะดะฐะฝะฝั‹ั….
void (*db_freefn)(void*); // ะคัƒะฝะบั†ะธั ะพัะฒะพะฑะพะถะดะตะฝะธั ะฟะฐะผัั‚ะธ ะฟั€ะธ ัƒะดะฐะปะตะฝะธะธ ะฑะปะพะบะฐ.
int db_ref; // ะกั‡ะตั‚ั‡ะธะบ ััั‹ะปะพะบ.
} dblk_t;

แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ”แƒ‘แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜, แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ‘แƒแƒšแƒแƒก แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก. แƒ‘แƒแƒšแƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ แƒกแƒแƒ—แƒแƒฃแƒ แƒจแƒ˜ db_ref - แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜, แƒ—แƒฃ แƒ˜แƒก แƒ›แƒ˜แƒแƒฆแƒฌแƒ”แƒ•แƒก แƒœแƒฃแƒšแƒก, แƒ”แƒก แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒ˜แƒ’แƒœแƒแƒšแƒก, แƒ แƒแƒ› แƒฌแƒแƒจแƒแƒšแƒแƒ— แƒ”แƒก แƒ‘แƒšแƒแƒ™แƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ. แƒ—แƒฃ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ— datab_alloc() , แƒ›แƒแƒจแƒ˜แƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ“แƒ”แƒ‘แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒจแƒ˜ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ•. แƒงแƒ•แƒ”แƒšแƒ แƒกแƒฎแƒ•แƒ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ“แƒ”แƒก แƒกแƒแƒ“แƒ›แƒ” แƒชแƒแƒšแƒ™แƒ”. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒœแƒ˜แƒ›แƒฃแƒจแƒ”แƒ‘แƒก แƒแƒœ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒ—.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

dblk_t *datab_alloc(int size);

แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜, แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒ˜แƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ‘แƒšแƒแƒ™แƒ˜ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก. แƒ›แƒ”แƒขแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ“แƒ”แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜ - แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ - แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒฎแƒ•แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒ”แƒก แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒฎแƒ“แƒ”แƒ‘แƒ; แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ“แƒ”แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒšแƒแƒ“. แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ›แƒ˜แƒกแƒ˜ แƒ•แƒ”แƒšแƒ˜ db_base แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒแƒ แƒ”แƒแƒšแƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒ–แƒ” แƒ“แƒ db_lim แƒ›แƒ˜แƒก แƒ‘แƒแƒšแƒแƒ›แƒ“แƒ”. แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ db_ref แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ”แƒ แƒ—แƒ–แƒ”. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒœแƒฃแƒšแƒ–แƒ”.

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ mblk_t

แƒ แƒแƒ’แƒแƒ แƒช แƒแƒฆแƒ˜แƒœแƒ˜แƒจแƒœแƒ, แƒ แƒ˜แƒ’แƒ˜แƒก แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜แƒก mblk_t, แƒ˜แƒ’แƒ˜ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“:

typedef struct msgb
{
  struct msgb *b_prev;   // ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ะฟั€ะตะดั‹ะดัƒั‰ะธะน ัะปะตะผะตะฝั‚ ัะฟะธัะบะฐ.
  struct msgb *b_next;   // ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ัะปะตะดัƒัŽั‰ะธะน ัะปะตะผะตะฝั‚ ัะฟะธัะบะฐ.
  struct msgb *b_cont;   // ะฃะบะฐะทะฐั‚ะตะปัŒ ะดะปั ะฟะพะดะบะปะตะนะบะธ ะบ ัะพะพะฑั‰ะตะฝะธัŽ ะดั€ัƒะณะธั… ัะพะพะฑั‰ะตะฝะธะน, ะดะปั ัะพะทะดะฐะฝะธั ะบะพั€ั‚ะตะถะฐ ัะพะพะฑั‰ะตะฝะธะน.
  struct datab *b_datap; // ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ัั‚ั€ัƒะบั‚ัƒั€ัƒ ะฑะปะพะบะฐ ะดะฐะฝะฝั‹ั….
  unsigned char *b_rptr; // ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ะฝะฐั‡ะฐะปะพ ะพะฑะปะฐัั‚ะธ ะดะฐะฝะฝั‹ั… ะดะปั ั‡ั‚ะตะฝะธั ะดะฐะฝะฝั‹ั… ะฑัƒั„ะตั€ะฐ b_datap.
  unsigned char *b_wptr; // ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ะฝะฐั‡ะฐะปะพ ะพะฑะปะฐัั‚ะธ ะดะฐะฝะฝั‹ั… ะดะปั ะทะฐะฟะธัะธ ะดะฐะฝะฝั‹ั… ะฑัƒั„ะตั€ะฐ b_datap.
  uint32_t reserved1;    // ะ—ะฐั€ะตะทะตั€ะฒะธั€ะพะฒะฐะฝะฝะพะต ะฟะพะปะต1, ะผะตะดะธะฐัั‚ั€ะธะผะตั€ ะฟะพะผะตั‰ะฐะตั‚ ั‚ัƒะดะฐ ัะปัƒะถะตะฑะฝัƒัŽ ะธะฝั„ะพั€ะผะฐั†ะธัŽ. 
  uint32_t reserved2;    // ะ—ะฐั€ะตะทะตั€ะฒะธั€ะพะฒะฐะฝะฝะพะต ะฟะพะปะต2, ะผะตะดะธะฐัั‚ั€ะธะผะตั€ ะฟะพะผะตั‰ะฐะตั‚ ั‚ัƒะดะฐ ัะปัƒะถะตะฑะฝัƒัŽ ะธะฝั„ะพั€ะผะฐั†ะธัŽ.
  #if defined(ORTP_TIMESTAMP)
  struct timeval timestamp;
  #endif
  ortp_recv_addr_t recv_addr;
} mblk_t;

แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ mblk_t แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ”แƒ‘แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜ b_แƒฌแƒ˜แƒœแƒ, แƒ‘_แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒ แƒ›แƒแƒ’แƒแƒ“ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ˜แƒก แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก แƒ แƒ˜แƒ’แƒ˜ แƒ แƒ˜แƒ’แƒ˜_แƒข).

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒแƒ“แƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ b_cont, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก tuple-แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜. แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒ‘แƒแƒšแƒ แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ”แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒœแƒฃแƒšแƒ˜ แƒ แƒฉแƒ”แƒ‘แƒ.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ–แƒ” b_datap, แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ. แƒ›แƒแƒก แƒ›แƒแƒกแƒ“แƒ”แƒ•แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—. แƒ•แƒ”แƒšแƒ˜ b_rptr แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒก, แƒกแƒแƒ˜แƒ“แƒแƒœแƒแƒช แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜. แƒ•แƒ”แƒšแƒ˜ b_wptr แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒก, แƒกแƒแƒ˜แƒ“แƒแƒœแƒแƒช แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒ.

แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒฃแƒšแƒ˜ แƒฎแƒแƒกแƒ˜แƒแƒ—แƒ˜แƒกแƒ แƒ“แƒ แƒแƒ  แƒ”แƒฎแƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก.

แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ— m1 แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜ d1.
Mediastreamer2 VoIP แƒซแƒ แƒแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 11
แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜ แƒคแƒ˜แƒ’แƒฃแƒ แƒ แƒ’แƒ•แƒ˜แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒแƒ›แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒฌแƒงแƒ”แƒ‘แƒแƒก m1, m1_1, m1_2.
Mediastreamer2 VoIP แƒซแƒ แƒแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 11

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ mblk_t

แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒ”แƒกแƒ˜แƒฏแƒ˜ mblk_t แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ—:

mblk_t *allocb(int size, int pri); 

แƒ˜แƒก แƒแƒฎแƒแƒš แƒ›แƒ”แƒกแƒ˜แƒฏแƒก แƒ“แƒ”แƒ‘แƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒจแƒ˜ mblk_t แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ–แƒแƒ›แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒ— แƒ–แƒแƒ›แƒแƒ›แƒ”แƒแƒ แƒ” แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ - แƒžแƒ แƒ˜ แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒแƒ› แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜. แƒœแƒฃแƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ แƒฉแƒ”แƒก. แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒแƒคแƒ แƒแƒฎแƒแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ mblk_init (), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ•แƒ”แƒšแƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ–แƒ”แƒ›แƒแƒ— แƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— datab_alloc(), แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒก. แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒจแƒ˜ แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ:

mp->b_datap=datab;
mp->b_rptr=mp->b_wptr=datab->db_base;
mp->b_next=mp->b_prev=mp->b_cont=NULL;

แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ–แƒ” แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒแƒฎแƒแƒš แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ—. แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒจแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒแƒ— แƒ˜แƒ’แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜:

memcpy(msg->b_rptr, data, size);

แƒกแƒแƒ“แƒแƒช แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฌแƒงแƒแƒ แƒแƒ–แƒ” แƒ“แƒ แƒ–แƒแƒ›แƒ - แƒ›แƒแƒ—แƒ˜ แƒ–แƒแƒ›แƒ.
แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒแƒแƒฎแƒšแƒแƒ— แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒแƒ›แƒ“แƒ” แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ˜แƒก แƒ™แƒ•แƒšแƒแƒ• แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ“แƒ”แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒšแƒ˜ แƒ–แƒแƒœแƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒ–แƒ”:

msg->b_wptr = msg->b_wptr + size

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ“แƒแƒœ, แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ:

mblk_t *esballoc(uint8_t *buf, int size, int pri, void (*freefn)(void*)); 

แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ, แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒก แƒ›แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ”แƒ‘แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ–แƒ” แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ”. แƒ‘แƒฃแƒคแƒ”แƒขแƒ˜. แƒ˜แƒ›แƒแƒ—. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒ˜แƒงแƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก. datab_alloc(). แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒ–แƒ” แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒ แƒฉแƒ”แƒ‘แƒ แƒ˜แƒฅ, แƒกแƒแƒ“แƒแƒช แƒ˜แƒงแƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒžแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒ’แƒ˜ แƒ›แƒ˜แƒ›แƒแƒ’แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒแƒฎแƒšแƒแƒ“ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒš แƒกแƒแƒ—แƒแƒฃแƒ แƒ–แƒ” แƒ“แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒ–แƒ”.

แƒ”แƒ แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒ–แƒ” mblk_t แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒแƒ“ แƒ˜แƒงแƒแƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜. แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ—:

mblk_t * appendb(mblk_t *mp, const char *data, int size, bool_t pad); 

mp โ€” แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ“แƒแƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒฎแƒ•แƒ แƒ‘แƒšแƒแƒ™แƒ˜;
แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ โ€” แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ‘แƒšแƒแƒ™แƒ–แƒ”, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒแƒกแƒšแƒ˜ แƒ“แƒแƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก;
แƒ–แƒแƒ›แƒ - แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ–แƒแƒ›แƒ;
pad โ€” แƒ“แƒ แƒแƒจแƒ, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—แƒแƒช แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ’แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ 4-แƒ‘แƒแƒ˜แƒขแƒ˜แƒแƒœแƒ˜ แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ˜แƒก แƒ’แƒแƒกแƒฌแƒ•แƒ แƒ˜แƒ• (แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ แƒœแƒฃแƒšแƒ”แƒ‘แƒ˜แƒ—).

แƒ—แƒฃ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒ˜แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒฉแƒแƒกแƒ›แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒฃแƒ™แƒ•แƒ” แƒ˜แƒฅ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ™แƒแƒœ. แƒ—แƒฃ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒšแƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒ˜แƒ แƒ•แƒ˜แƒ“แƒ แƒ” แƒ–แƒแƒ›แƒ, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ–แƒแƒ›แƒ˜แƒ— แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ™แƒแƒžแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒ—แƒแƒœ แƒžแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— b_cont. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ›แƒ”แƒกแƒ˜แƒฏแƒ˜ แƒ˜แƒฅแƒชแƒ”แƒ•แƒ แƒขแƒแƒขแƒแƒ“.

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒฎแƒ•แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ tuple-แƒจแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ:

void msgappend(mblk_t *mp, const char *data, int size, bool_t pad);

แƒ˜แƒก แƒ˜แƒžแƒแƒ•แƒ˜แƒก แƒ‘แƒแƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒขแƒฃแƒžแƒจแƒ˜ (แƒ›แƒแƒก แƒแƒฅแƒ•แƒก b_cont แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ null) แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒแƒ› แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก appendb ().

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ˜แƒ’แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒจแƒ˜ แƒแƒœ แƒขแƒแƒžแƒจแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

int msgdsize(const mblk_t *mp);

แƒ˜แƒก แƒ’แƒแƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก tuple-แƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ›แƒ—แƒšแƒ˜แƒแƒœ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก แƒแƒ› แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ”แƒ‘แƒจแƒ˜. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“:

 mp->b_wptr - mp->b_rptr

แƒแƒ แƒ˜ แƒขแƒแƒžแƒ˜แƒก แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ:

mblk_t *concatb(mblk_t *mp, mblk_t *newm);

แƒ˜แƒ’แƒ˜ แƒแƒ›แƒแƒ’แƒ แƒ”แƒ‘แƒก แƒขแƒแƒžแƒก แƒแƒฎแƒแƒšแƒ˜ แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒ™แƒฃแƒ“แƒแƒ›แƒ“แƒ” mp แƒ“แƒ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒแƒžแƒ˜แƒก แƒ‘แƒแƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒ–แƒ”.

แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒขแƒฃแƒžแƒšแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ“แƒแƒ˜แƒฅแƒชแƒ”แƒก แƒ”แƒ แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ”แƒ แƒ—แƒ˜ แƒ‘แƒšแƒแƒ™แƒ˜แƒ—; แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ—:

void msgpullup(mblk_t *mp,int len);

แƒ—แƒฃ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ len แƒแƒ แƒ˜แƒก -1, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“. แƒ—แƒฃ len แƒแƒ แƒ˜แƒก แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜, แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒแƒ› แƒ–แƒแƒ›แƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒ“แƒ แƒ›แƒแƒกแƒจแƒ˜ แƒ“แƒแƒ™แƒแƒžแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜. แƒ—แƒฃ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒแƒ›แƒแƒ˜แƒฌแƒฃแƒ แƒ”แƒ‘แƒ, แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒฉแƒ”แƒ แƒ“แƒ”แƒ‘แƒ. แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒก แƒแƒฎแƒแƒšแƒ˜ แƒ–แƒแƒ›แƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒก แƒ“แƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ—. แƒ“แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒฌแƒแƒ˜แƒจแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ แƒ’แƒ แƒแƒ•แƒแƒจแƒ˜.

แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ˜แƒกแƒแƒก mblk_t แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ—แƒฃ แƒ“แƒแƒ แƒ”แƒ™แƒ•แƒ˜แƒกแƒแƒก แƒฃแƒคแƒแƒกแƒ () แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒœแƒฃแƒšแƒ˜, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒจแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ mblk_t, แƒ แƒแƒช แƒ›แƒแƒกแƒ–แƒ” แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก.

แƒแƒฎแƒแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ:

void mblk_init(mblk_t *mp);

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ:

mblk_t * appendb(mblk_t *mp, const char *data, size_t size, bool_t pad);

แƒ—แƒฃ แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ  แƒฏแƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒš แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒ›แƒ˜แƒ›แƒแƒ’แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒชแƒแƒšแƒ™แƒ” แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ–แƒแƒ›แƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ— (แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒจแƒ˜) แƒ“แƒ แƒ›แƒ”แƒกแƒ˜แƒฏแƒ˜ แƒ˜แƒฅแƒชแƒ”แƒ•แƒ แƒขแƒแƒขแƒแƒ“.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ tuple-แƒจแƒ˜:

void msgappend(mblk_t *mp, const char *data, size_t size, bool_t pad); 

แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒก appendb()-แƒก แƒ›แƒแƒ แƒงแƒฃแƒŸแƒจแƒ˜.

แƒแƒ แƒ˜ แƒขแƒแƒžแƒ˜แƒก แƒ”แƒ แƒ—แƒจแƒ˜ แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ:

mblk_t *concatb(mblk_t *mp, mblk_t *newm);

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒ˜แƒ›แƒแƒ’แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ mp.

แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒแƒกแƒšแƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ:

mblk_t *copyb(const mblk_t *mp);

แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒ—:

mblk_t *copymsg(const mblk_t *mp);

แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ— copyb ().

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒกแƒšแƒ˜ mblk_t. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜ แƒแƒ  แƒ™แƒแƒžแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ db_ref:

mblk_t *dupb(mblk_t *mp);

แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒ›แƒกแƒฃแƒ‘แƒฃแƒฅแƒ˜ แƒแƒกแƒšแƒ˜แƒก แƒ“แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜ แƒแƒ  แƒ™แƒแƒžแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒ—แƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ db_ref:

mblk_t *dupmsg(mblk_t* m);

แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ แƒ”แƒ แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒจแƒ˜:

void msgpullup(mblk_t *mp,size_t len);

แƒ—แƒฃ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ len แƒแƒ แƒ˜แƒก -1, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“.

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ, แƒ’แƒแƒ›แƒ แƒแƒ•แƒšแƒ”แƒ‘แƒ:

void freemsg(mblk_t *mp);

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ›แƒชแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜แƒ—. แƒ—แƒฃ แƒ˜แƒก แƒœแƒฃแƒšแƒก แƒ›แƒ˜แƒแƒฆแƒฌแƒ”แƒ•แƒก, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒฌแƒแƒ˜แƒจแƒšแƒ”แƒ‘แƒ.

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒแƒœ แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ.

size_t msgdsize(const mblk_t *mp);

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ แƒ แƒ˜แƒ’แƒ˜แƒก แƒ™แƒฃแƒ“แƒ˜แƒ“แƒแƒœ:

mblk_t *ms_queue_peek_last (q);

แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ˜แƒ’แƒ—แƒแƒ•แƒกแƒ˜แƒก แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ แƒ›แƒ”แƒแƒ แƒ” แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒจแƒ˜ (แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒ”แƒก แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ“แƒ แƒแƒจแƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒ˜):

mblk_meta_copy(const mblk_t *source, mblk *dest);

แƒ แƒ˜แƒ’แƒจแƒ˜ แƒ แƒ˜แƒ’แƒ˜_แƒข

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒ’แƒ˜ แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒจแƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฌแƒ แƒ˜แƒฃแƒšแƒ˜ แƒแƒ แƒ›แƒแƒ’แƒแƒ“ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—. แƒกแƒ˜แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒกแƒ™แƒ”แƒœ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒœแƒ˜แƒ›แƒฃแƒจแƒ”แƒ‘แƒ˜แƒ—. แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒแƒซแƒ แƒแƒแƒ‘แƒก แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒฎแƒแƒšแƒ แƒ—แƒแƒ•แƒแƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒฃแƒ›แƒแƒซแƒ แƒแƒ แƒ แƒฉแƒ”แƒ‘แƒ. แƒ˜แƒ›แƒแƒ—. แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ˜แƒšแƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒ—แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜.
แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒ แƒ˜แƒ’แƒจแƒ˜ แƒ แƒ˜แƒ’แƒ˜_แƒข, แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒฅแƒ•แƒ”แƒ›แƒแƒ—:

typedef struct _queue
{
   mblk_t _q_stopper; /* "ะฅะพะปะพัั‚ะพะน" ัะปะตะผะตะฝั‚ ะพั‡ะตั€ะตะดะธ, ะฝะต ัƒะบะฐะทั‹ะฒะฐะตั‚ ะฝะฐ ะดะฐะฝะฝั‹ะต, ะธัะฟะพะปัŒะทัƒะตั‚ัั ั‚ะพะปัŒะบะพ ะดะปั ัƒะฟั€ะฐะฒะปะตะฝะธั ะพั‡ะตั€ะตะดัŒัŽ. ะŸั€ะธ ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธะธ ะพั‡ะตั€ะตะดะธ (qinit()) ะตะณะพ ัƒะบะฐะทะฐั‚ะตะปะธ ะฝะฐัั‚ั€ะฐะธะฒะฐัŽั‚ัั ั‚ะฐะบ, ั‡ั‚ะพะฑั‹ ะพะฝะธ ัƒะบะฐะทั‹ะฒะฐะปะธ ะฝะฐ ะฝะตะณะพ ัะฐะผะพะณะพ. */
   int q_mcount;        // ะšะพะปะธั‡ะตัั‚ะฒะพ ัะปะตะผะตะฝั‚ะพะฒ ะฒ ะพั‡ะตั€ะตะดะธ.
} queue_t;

แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ•แƒ”แƒšแƒก - แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒก _q_stopper แƒแƒ™แƒ แƒ˜แƒคแƒ”แƒ— *mblk_t, แƒ˜แƒก แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒ แƒ˜แƒ’แƒจแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ–แƒ” (แƒ›แƒ”แƒกแƒ˜แƒฏแƒ–แƒ”). แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒ”แƒแƒ แƒ” แƒ•แƒ”แƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜ แƒ แƒ˜แƒ’แƒจแƒ˜.
แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ’แƒ•แƒ˜แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒ แƒ˜แƒ’แƒก แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ q1, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก 4 แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก m1, m2, m3, m4.
Mediastreamer2 VoIP แƒซแƒ แƒแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 11
แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ” แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒ แƒ˜แƒ’แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ q1, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก 4 แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก m1,m2,m3,m4. แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ m2 แƒแƒ แƒ˜แƒก แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒ—แƒแƒ•แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ  แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก m2_1 แƒ“แƒ m2_2.

Mediastreamer2 VoIP แƒซแƒ แƒแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 11

แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ queue_t

แƒ แƒ˜แƒ’แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ:

void qinit(queue_t *q);

แƒกแƒแƒ•แƒ”แƒšแƒ” _q_stopper (แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒก "แƒกแƒขแƒแƒžแƒ”แƒ แƒก" แƒ“แƒแƒ•แƒแƒ แƒฅแƒ›แƒ”แƒ•แƒ—) แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ— mblk_init (), แƒ›แƒ˜แƒกแƒ˜ แƒฌแƒ˜แƒœแƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ แƒแƒ—แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒ–แƒ”. แƒ แƒ˜แƒ’แƒ˜แƒก แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜ แƒแƒฆแƒ“แƒ’แƒ”แƒ‘แƒ แƒœแƒฃแƒšแƒแƒ›แƒ“แƒ”.

แƒแƒฎแƒแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ (แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜):

void putq(queue_t *q, mblk_t *m);

แƒแƒฎแƒแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ m แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒกแƒ˜แƒ˜แƒก แƒ‘แƒแƒšแƒแƒก, แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒกแƒแƒชแƒแƒ‘แƒ˜ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ แƒ“แƒ แƒ˜แƒก แƒฎแƒ“แƒ”แƒ‘แƒ แƒฌแƒ˜แƒœแƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ แƒกแƒแƒชแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ แƒ˜แƒ’แƒ˜แƒก แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ.

แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒแƒซแƒ˜แƒ”แƒ‘แƒ แƒ แƒ˜แƒ’แƒ˜แƒ“แƒแƒœ:

mblk_t * getq(queue_t *q); 

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ“แƒ˜แƒก แƒกแƒแƒชแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜ แƒ›แƒชแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒ—แƒฃ แƒ แƒ˜แƒ’แƒจแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, แƒ’แƒแƒ แƒ“แƒ แƒกแƒแƒชแƒแƒ‘แƒ˜แƒกแƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ 0.

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒกแƒ›แƒ แƒ แƒ˜แƒ’แƒจแƒ˜:

void insq(queue_t *q, mblk_t *emp, mblk_t *mp); 

แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ mp แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒฌแƒ˜แƒœ แƒฉแƒแƒกแƒ›แƒฃแƒšแƒ˜ emp. แƒ—แƒฃ emp=0, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ แƒ˜แƒ’แƒ˜แƒก แƒ‘แƒแƒšแƒแƒจแƒ˜.

แƒ แƒ˜แƒ’แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ˜แƒกแƒ’แƒแƒœ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ:

void remq(queue_t *q, mblk_t *mp); 

แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜ แƒ›แƒชแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ.

แƒ แƒ˜แƒ’แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒ˜แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ:

mblk_t * peekq(queue_t *q); 

แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒงแƒ•แƒ”แƒšแƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ˜แƒกแƒแƒก:

void flushq(queue_t *q, int how);

แƒ™แƒแƒ›แƒแƒ—แƒ˜ แƒ แƒแƒ’แƒแƒ  แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ แƒ˜แƒ’แƒ˜แƒก แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒœแƒฃแƒšแƒ–แƒ”.

แƒ›แƒแƒ™แƒ แƒ แƒ แƒ˜แƒ’แƒ˜แƒก แƒ‘แƒแƒšแƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒ˜แƒก แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒแƒ“:

mblk_t * qlast(queue_t *q);

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› แƒ“แƒแƒ แƒ”แƒ™แƒ•แƒ˜แƒกแƒแƒก ms_queue_put (q, m) แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜แƒก แƒœแƒฃแƒšแƒแƒ•แƒแƒœแƒ˜ แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒ˜แƒ—, แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ›แƒแƒ แƒงแƒฃแƒŸแƒ“แƒ”แƒ‘แƒ. แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒ’แƒแƒ˜แƒงแƒ˜แƒœแƒ”แƒ‘แƒ. แƒ˜แƒฅแƒชแƒ”แƒ•แƒ แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒแƒ“ ms_queue_next(q, m).

แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ

แƒ–แƒ”แƒ›แƒแƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ แƒ˜แƒ’แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒชแƒ”แƒ›แƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒ“แƒแƒœ แƒ›แƒ”แƒแƒ แƒ”แƒ–แƒ” แƒแƒœ แƒ”แƒ แƒ—แƒ˜แƒ“แƒแƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒคแƒ˜แƒšแƒขแƒ แƒ–แƒ”. แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜ แƒฅแƒ›แƒœแƒ˜แƒแƒœ แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒš แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒก. แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒก แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒก แƒ”แƒฌแƒแƒ“แƒ”แƒ‘แƒ แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒกแƒ˜แƒขแƒงแƒ•แƒ "แƒžแƒ˜แƒœแƒ˜". แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒก แƒแƒฆแƒกแƒแƒฌแƒ”แƒ แƒแƒ“ แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก โ€žแƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒกโ€œ แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒแƒก. แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ _MSCPpoint, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒก แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒžแƒ˜แƒœแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒก; แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒ˜แƒ’แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒแƒœ แƒ’แƒแƒ›แƒแƒกแƒแƒกแƒ•แƒšแƒ”แƒšแƒ˜แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜

typedef struct _MSCPoint{
struct _MSFilter *filter; // ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ั„ะธะปัŒั‚ั€ ะผะตะดะธะฐัั‚ั€ะธะผะตั€ะฐ.
int pin;                        // ะะพะผะตั€ ะพะดะฝะพะณะพ ะธะท ะฒั…ะพะดะพะฒ ะธะปะธ ะฒั‹ั…ะพะดะพะฒ ั„ะธะปัŒั‚ั€ะฐ, ั‚.ะต. ะฟะธะฝ.
} MSCPoint;

แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒฅแƒ˜แƒœแƒซแƒ˜แƒกแƒ—แƒแƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒแƒœแƒแƒ›แƒ แƒ˜แƒšแƒ˜แƒ แƒœแƒฃแƒšแƒ˜แƒ“แƒแƒœ.

แƒแƒ แƒ˜ แƒžแƒ˜แƒœแƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒ’แƒ˜แƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒ— _MSQueue, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒ’แƒก แƒ“แƒ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ”แƒ‘แƒก แƒ˜แƒ› แƒแƒ แƒ˜ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒกแƒ™แƒ”แƒœ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ˜แƒก แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒก:

typedef struct _MSQueue
{
queue_t q;
MSCPoint prev;
MSCPoint next;
}MSQueue;

แƒฉแƒ•แƒ”แƒœ แƒแƒ› แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒก แƒ“แƒแƒ•แƒแƒ แƒฅแƒ›แƒ”แƒ•แƒ—. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒก แƒ“แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒก (MSQueue). แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ“แƒ’แƒ˜แƒœแƒ“แƒ”แƒ‘แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก; แƒฉแƒ•แƒ”แƒœ แƒ”แƒก แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ”แƒฅแƒกแƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— MSFilterDesc, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒคแƒ˜แƒšแƒขแƒ แƒ˜. แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒคแƒ˜แƒšแƒขแƒ แƒก แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒจแƒ˜, MSFilter:


struct _MSFilter{
    MSFilterDesc *desc;    /* ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ะดะตัะบั€ะธะฟั‚ะพั€ ั„ะธะปัŒั‚ั€ะฐ. */
    /* ะ—ะฐั‰ะธั‰ะตะฝะฝั‹ะต ะฐั‚ั€ะธะฑัƒั‚ั‹, ะธั… ะฝะตะปัŒะทั ัะดะฒะธะณะฐั‚ัŒ ะธะปะธ ัƒะฑะธั€ะฐั‚ัŒ ะธะฝะฐั‡ะต ะฑัƒะดะตั‚ ะฝะฐั€ัƒัˆะตะฝะฐ ั€ะฐะฑะพั‚ะฐ ั ะฟะปะฐะณะธะฝะฐะผะธ. */
    ms_mutex_t lock;      /* ะกะตะผะฐั„ะพั€. */
    MSQueue **inputs;     /* ะขะฐะฑะปะธั†ะฐ ะฒั…ะพะดะฝั‹ั… ะปะธะฝะบะพะฒ. */
    MSQueue **outputs;    /* ะขะฐะฑะปะธั†ะฐ ะฒั‹ั…ะพะดะฝั‹ั… ะปะธะฝะบะพะฒ. */
    struct _MSFactory *factory; /* ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ั„ะฐะฑั€ะธะบัƒ, ะบะพั‚ะพั€ะฐั ัะพะทะดะฐะปะฐ ะดะฐะฝะฝั‹ะน ัะบะทะตะผะฟะปัั€ ั„ะธะปัŒั‚ั€ะฐ. */
    void *padding;              /* ะะต ะธัะฟะพะปัŒะทัƒะตั‚ัั, ะฑัƒะดะตั‚ ะทะฐะดะตะนัั‚ะฒะพะฒะฐะฝ ะตัะปะธ ะดะพะฑะฐะฒัั‚ัั ะทะฐั‰ะธั‰ะตะฝะฝั‹ะต ะฟะพะปั. */
    void *data;                 /* ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ะฟั€ะพะธะทะฒะพะปัŒะฝัƒัŽ ัั‚ั€ัƒะบั‚ัƒั€ัƒ ะดะปั ั…ั€ะฐะฝะตะฝะธั ะดะฐะฝะฝั‹ั… ะฒะฝัƒั‚ั€ะตะฝะฝะตะณะพ ัะพัั‚ะพัะฝะธั ั„ะธะปัŒั‚ั€ะฐ ะธ ะฟั€ะพะผะตะถัƒั‚ะพั‡ะฝั‹ั… ะฒั‹ั‡ะธัะปะตะฝะธะน. */
    struct _MSTicker *ticker;   /* ะฃะบะฐะทะฐั‚ะตะปัŒ ะฝะฐ ะพะฑัŠะตะบั‚ ั‚ะธะบะตั€ะฐ, ะบะพั‚ะพั€ั‹ะน ะฝะต ะดะพะปะถะตะฝ ะฑั‹ั‚ัŒ ะฝัƒะปะตะฒั‹ะผ ะบะพะณะดะฐ ะฒั‹ะทั‹ะฒะฐะตั‚ัั ั„ัƒะฝะบั†ะธั process(). */
    /*private attributes, they can be moved and changed at any time*/
    MSList *notify_callbacks; /* ะกะฟะธัะพะบ ะพะฑั€ะฐั‚ะฝั‹ั… ะฒั‹ะทะพะฒะพะฒ, ะธัะฟะพะปัŒะทัƒะตะผั‹ั… ะดะปั ะพะฑั€ะฐะฑะพั‚ะบะธ ัะพะฑั‹ั‚ะธะน ั„ะธะปัŒั‚ั€ะฐ. */
    uint32_t last_tick;       /* ะะพะผะตั€ ะฟะพัะปะตะดะฝะตะณะพ ั‚ะฐะบั‚ะฐ, ะบะพะณะดะฐ ะฒั‹ะฟะพะปะฝัะปัั ะฒั‹ะทะพะฒ process(). */ 
    MSFilterStats *stats;     /* ะกั‚ะฐั‚ะธัั‚ะธะบะฐ ั€ะฐะฑะพั‚ั‹ ั„ะธะปัŒั‚ั€ะฐ.*/
    int postponed_task; /*ะšะพะปะธั‡ะตัั‚ะฒะพ ะพั‚ะปะพะถะตะฝะฝั‹ั… ะทะฐะดะฐั‡. ะะตะบะพั‚ะพั€ั‹ะต ั„ะธะปัŒั‚ั€ั‹ ะผะพะณัƒั‚ ะพั‚ะบะปะฐะดั‹ะฒะฐั‚ัŒ ะพะฑั€ะฐะฑะพั‚ะบัƒ ะดะฐะฝะฝั‹ั… (ะฒั‹ะทะพะฒ process()) ะฝะฐ ะฝะตัะบะพะปัŒะบะพ ั‚ะฐะบั‚ะพะฒ.*/
    bool_t seen;  /* ะคะปะฐะณ, ะบะพั‚ะพั€ั‹ะน ะธัะฟะพะปัŒะทัƒะตั‚ ั‚ะธะบะตั€, ั‡ั‚ะพะฑั‹ ะฟะพะผะตั‡ะฐั‚ัŒ ั‡ั‚ะพ ัั‚ะพั‚ ัะบะทะตะผะฟะปัั€ ั„ะธะปัŒั‚ั€ะฐ ะพะฝ ัƒะถะต ะพะฑัะปัƒะถะธะป ะฝะฐ ะดะฐะฝะฝะพะผ ั‚ะฐะบั‚ะต.*/
};
typedef struct _MSFilter MSFilter;

แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜ C แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“ (แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ  แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜), แƒแƒ›แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒ. MSFilter, แƒ“แƒ แƒ™แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ˜ แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒ MSQueue.

แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒแƒฅแƒ›แƒ˜แƒแƒœแƒแƒ‘แƒ แƒ™แƒฃแƒšแƒ˜แƒกแƒ”แƒ‘แƒจแƒ˜

แƒ แƒแƒชแƒ แƒ’แƒ˜แƒ—แƒฎแƒแƒ แƒ˜แƒ—, แƒ แƒแƒ› แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜ แƒแƒ แƒ˜แƒก แƒขแƒ™แƒ˜แƒžแƒ”แƒ‘แƒ˜แƒก แƒฌแƒงแƒแƒ แƒแƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜, แƒ”แƒก แƒแƒ  แƒ˜แƒงแƒ แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ›แƒแƒ แƒ—แƒšแƒ”. แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜ แƒแƒ แƒ˜แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก แƒกแƒแƒแƒ—แƒ–แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ () แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒฅแƒ”แƒ›แƒ˜แƒก (แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก) แƒงแƒ•แƒ”แƒšแƒ แƒคแƒ˜แƒšแƒขแƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ˜แƒ’แƒ˜ แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ— แƒขแƒ˜แƒ™แƒ”แƒ แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒš แƒคแƒ˜แƒšแƒขแƒ แƒก C แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒจแƒ˜, แƒขแƒ˜แƒ™แƒ”แƒ แƒก แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ— แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ˜แƒก แƒแƒ›แƒ˜แƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒก, แƒกแƒแƒœแƒแƒ› แƒแƒ  แƒ’แƒแƒ›แƒแƒ แƒ—แƒแƒ•แƒ—. แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒ›แƒ˜แƒก แƒ›แƒแƒ•แƒšแƒแƒ–แƒ” แƒ›แƒ˜แƒœแƒ“แƒแƒ‘แƒ˜แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒแƒก, แƒแƒ“แƒ’แƒ”แƒœแƒก แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒ›แƒแƒก. แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒคแƒ˜แƒšแƒขแƒ แƒ˜ แƒแƒ แƒฏแƒ”แƒ  แƒแƒ  "แƒ“แƒแƒ˜แƒ—แƒ•แƒแƒšแƒแƒก", แƒ˜แƒก แƒแƒฆแƒœแƒ˜แƒจแƒœแƒแƒ•แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒš แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒก แƒ›แƒแƒ—แƒจแƒ˜ แƒฉแƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜แƒก แƒ›แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ˜แƒ—. แƒฉแƒแƒœแƒก. แƒซแƒ˜แƒ”แƒ‘แƒ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒคแƒ˜แƒšแƒขแƒ แƒก แƒแƒฅแƒ•แƒก.

แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜ แƒขแƒฃแƒ แƒ˜แƒก แƒ“แƒ แƒแƒก, แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜ แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก, แƒแƒ แƒ˜แƒก แƒ—แƒฃ แƒแƒ แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒ”แƒ แƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒฌแƒงแƒแƒ แƒ. แƒ—แƒฃ แƒแƒ แƒชแƒ”แƒ แƒ—แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒแƒ แƒแƒกแƒฌแƒแƒ แƒแƒ“ แƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜ แƒ˜แƒจแƒšแƒ”แƒ‘แƒ.

แƒ—แƒฃ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ "แƒกแƒฌแƒแƒ แƒ˜", แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒœแƒแƒžแƒแƒ•แƒœแƒ˜ แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒ แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ (). แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ แƒ“แƒแƒ“แƒ’แƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒ”แƒœแƒขแƒ˜ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒชแƒ˜แƒ™แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒงแƒแƒ•แƒ”แƒš 10 แƒ›แƒ˜แƒšแƒ˜แƒฌแƒแƒ›แƒจแƒ˜), แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜ แƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ () แƒงแƒ•แƒ”แƒšแƒ แƒแƒ“แƒ แƒ” แƒœแƒแƒžแƒแƒ•แƒœแƒ˜ แƒฌแƒงแƒแƒ แƒแƒก แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒ˜แƒแƒจแƒ˜ แƒ“แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒšแƒ˜ แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ—แƒฃ แƒคแƒ˜แƒšแƒขแƒ แƒก แƒแƒฅแƒ•แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ () แƒ›แƒ”แƒแƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒ›, แƒกแƒแƒœแƒแƒ› แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ˜ แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜แƒ. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒกแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒคแƒ˜แƒšแƒขแƒ แƒ–แƒ” แƒ“แƒ โ€žแƒ’แƒแƒ“แƒแƒฎแƒ•แƒ”แƒ•แƒกโ€œ แƒกแƒแƒœแƒแƒ› แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ. แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒ“แƒแƒœ แƒคแƒ˜แƒšแƒขแƒ แƒ–แƒ”, แƒกแƒแƒœแƒแƒ› แƒกแƒ˜แƒ แƒแƒ  แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ. แƒ”แƒก แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒชแƒ˜แƒ™แƒšแƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก.

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜แƒ— tuples-แƒก แƒ“แƒ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ— แƒ˜แƒ›แƒแƒ–แƒ”, แƒ—แƒฃ แƒ แƒแƒขแƒแƒ› แƒ“แƒแƒ”แƒ›แƒแƒขแƒ แƒแƒกแƒ”แƒ—แƒ˜ แƒกแƒฃแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ แƒ›แƒ”แƒ“แƒ˜แƒแƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒก. แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ˜ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒแƒ  แƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ แƒ“แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒกแƒแƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ˜แƒก แƒฏแƒ”แƒ แƒแƒ“แƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ•แƒฌแƒ”แƒ แƒ— แƒคแƒ˜แƒšแƒขแƒ แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒคแƒฃแƒ แƒ˜แƒ”แƒก แƒกแƒฌแƒ แƒแƒค แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒ–แƒแƒ›แƒ แƒแƒ แƒ˜แƒก แƒแƒ แƒ˜ แƒกแƒ˜แƒ›แƒซแƒšแƒแƒ•แƒ แƒ˜แƒก. แƒ˜แƒงแƒแƒก 512 แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ. แƒ—แƒฃ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒแƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ แƒแƒ แƒฎแƒ˜แƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒกแƒแƒก แƒ›แƒแƒ’แƒ•แƒ˜แƒขแƒแƒœแƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก 160 แƒœแƒ˜แƒ›แƒฃแƒจแƒก. แƒ›แƒแƒชแƒ“แƒฃแƒ แƒ˜แƒ แƒแƒ  แƒจแƒ”แƒแƒ’แƒ แƒแƒ•แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒ“แƒแƒœ, แƒกแƒแƒœแƒแƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒจแƒ”แƒฏแƒแƒฎแƒ”แƒ‘แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ แƒขแƒ˜แƒ™แƒ”แƒ แƒ—แƒแƒœ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ“ แƒจแƒ”แƒ”แƒชแƒ“แƒ”แƒ‘แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒฎแƒ•แƒ”แƒ•แƒแƒก แƒ›แƒแƒœแƒแƒ›, แƒกแƒแƒœแƒแƒ› แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜แƒ. แƒแƒ“แƒ แƒ”, แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ”แƒ— แƒ”แƒก แƒฌแƒ”แƒกแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜. แƒแƒ› แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก process() แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒ› แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ.

แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ 512 แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜แƒก แƒแƒฆแƒ”แƒ‘แƒ, แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒ˜ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒ”แƒ‘แƒ, แƒ”.แƒ˜. แƒคแƒ˜แƒšแƒขแƒ แƒก แƒ›แƒแƒฃแƒฌแƒ”แƒ•แƒก 640 แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜แƒก แƒแƒฆแƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒแƒ—แƒ’แƒแƒœ 512-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ“แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒแƒ›แƒ“แƒ”. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœแƒ›แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ›แƒ, แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ’แƒแƒ แƒ“แƒ, แƒฃแƒœแƒ“แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒก แƒ“แƒแƒ›แƒฎแƒ›แƒแƒ แƒ” แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒฃแƒแƒšแƒ”แƒ“แƒฃแƒ  แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“. แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ›แƒ แƒ“แƒ แƒแƒ› แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ แƒจแƒ”แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ - MSBufferizer (แƒ‘แƒฃแƒคแƒ”แƒ แƒ”แƒ แƒ˜), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒก แƒขแƒฃแƒžแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ (MSBufferizer)

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ“แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒ›แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“. แƒกแƒแƒœแƒแƒ› แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜ แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก, แƒคแƒ˜แƒšแƒขแƒ แƒ˜ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒฃแƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜, แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ›แƒซแƒšแƒแƒ•แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒœแƒฃแƒšแƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก, แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก process() แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ–แƒแƒ›แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜, แƒกแƒแƒœแƒแƒ› แƒ˜แƒก แƒแƒ›แƒแƒ˜แƒฌแƒฃแƒ แƒ”แƒ‘แƒ.
แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ, แƒ แƒฉแƒ”แƒ‘แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ tuple, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜.

แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒก:

struct _MSBufferizer{
queue_t q; /* ะžั‡ะตั€ะตะดัŒ ัะพะพะฑั‰ะตะฝะธะน. */
int size; /* ะกัƒะผะผะฐั€ะฝั‹ะน ั€ะฐะทะผะตั€ ะดะฐะฝะฝั‹ั… ะฝะฐั…ะพะดัั‰ะธั…ัั ะฒ ะฑัƒั„ะตั€ะธะทะฐั‚ะพั€ะต ะฒ ะดะฐะฝะฝั‹ะน ะผะพะผะตะฝั‚. */
};
typedef struct _MSBufferizer MSBufferizer;

MSBufferizer-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜

แƒแƒฎแƒแƒšแƒ˜ แƒ‘แƒฃแƒคแƒ”แƒ แƒฃแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ:

MSBufferizer * ms_bufferizer_new(void);

แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜แƒ, แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ ms_bufferizer_init() แƒ“แƒ แƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜.

แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ:

void ms_bufferizer_init(MSBufferizer *obj); 

แƒ แƒ˜แƒ’แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒฎแƒ“แƒ”แƒ‘แƒ q, แƒ•แƒ”แƒšแƒ˜ แƒ–แƒแƒ›แƒ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒœแƒฃแƒšแƒ–แƒ”.

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ:

void ms_bufferizer_put(MSBufferizer *obj, mblk_t *m); 

แƒ แƒ˜แƒ’แƒก แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ m. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒš แƒ–แƒแƒ›แƒแƒก แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ–แƒแƒ›แƒ.

แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ แƒ‘แƒ›แƒฃแƒšแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ แƒ˜แƒ’แƒ˜แƒ“แƒแƒœ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ q:

void ms_bufferizer_put_from_queue(MSBufferizer *obj, MSQueue *q);   

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ แƒ‘แƒ›แƒฃแƒšแƒ˜แƒ“แƒแƒœ q แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— ms_bufferizer_put().

แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ“แƒแƒœ:

int ms_bufferizer_read(MSBufferizer *obj, uint8_t *data, int datalen); 

แƒ—แƒฃ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒ“แƒแƒ’แƒ แƒแƒ•แƒ˜แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒšแƒ–แƒ” แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜แƒ (แƒ“แƒแƒขแƒแƒšแƒ”แƒœแƒ˜), แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒœแƒฃแƒšแƒก, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ  แƒ™แƒแƒžแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒจแƒ˜. แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒ˜ แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ” แƒขแƒแƒžแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ. แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, tuple แƒฌแƒแƒ˜แƒจแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ“แƒ”แƒ‘แƒ. แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ˜แƒขแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜. แƒ—แƒฃ แƒกแƒ˜แƒ•แƒ แƒชแƒ” แƒแƒ›แƒแƒ˜แƒฌแƒฃแƒ แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒจแƒฃแƒแƒจแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒแƒ› แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒจแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜ แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒš แƒ“แƒแƒฃแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒœแƒแƒฌแƒ˜แƒšแƒแƒ›แƒ“แƒ”. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฏแƒ”แƒ แƒ–แƒ” แƒ“แƒแƒ แƒ”แƒ™แƒ•แƒ˜แƒกแƒแƒก, แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒแƒ› แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒ“แƒแƒœ.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ˜แƒ› แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜:

int ms_bufferizer_get_avail(MSBufferizer *obj); 

แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ•แƒ”แƒšแƒก แƒ–แƒแƒ›แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ”แƒ แƒ˜.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜:

void ms_bufferizer_skip_bytes(MSBufferizer *obj, int bytes);

แƒ‘แƒแƒ˜แƒขแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ’แƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ. แƒฃแƒซแƒ•แƒ”แƒšแƒ”แƒกแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ’แƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ.

แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ:

void ms_bufferizer_flush(MSBufferizer *obj); 

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜ แƒแƒฆแƒ“แƒ’แƒ”แƒ‘แƒ แƒœแƒฃแƒšแƒแƒ›แƒ“แƒ”.

แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ:

void ms_bufferizer_uninit(MSBufferizer *obj); 

แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜.

แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ”แƒ‘แƒ:

void ms_bufferizer_destroy(MSBufferizer *obj);  

แƒ‘แƒฃแƒคแƒ”แƒ แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒ”แƒ“แƒ˜แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒกแƒแƒฌแƒงแƒ˜แƒก แƒ™แƒแƒ“แƒจแƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, MS_L16_ENC แƒคแƒ˜แƒšแƒขแƒ แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฌแƒ”แƒกแƒ แƒ˜แƒ’แƒ”แƒ‘แƒก แƒœแƒ˜แƒ›แƒฃแƒจแƒ”แƒ‘แƒจแƒ˜ แƒ‘แƒแƒ˜แƒขแƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒจแƒ”แƒ™แƒ•แƒ”แƒ—แƒ˜แƒ“แƒแƒœ แƒฐแƒแƒกแƒขแƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒ›แƒ“แƒ”: l16.c

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒขแƒ˜แƒ™แƒ”แƒ แƒ˜แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒคแƒแƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ•แƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒ— แƒ’แƒแƒ“แƒแƒญแƒแƒ แƒ‘แƒ”แƒ‘แƒฃแƒš แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒ— แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒแƒก แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒจแƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ