αž€αžΆαžšαžšαž»αž€αžšαž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Mediastreamer2 VoIP αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 11

αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αŸƒαž’αžαŸ’αžαž”αž‘αž‚αžΊαž™αž€αž–αžΈαžαŸ’αž‰αž»αŸ† αž”αŸ‰αž»αžŸαŸ’αžαž·αŸ zen.

αž€αžΆαžšαžšαž»αž€αžšαž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Mediastreamer2 VoIP αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 11

αž™αž“αŸ’αžαž€αžΆαžšαž“αŸƒαž…αž›αž“αžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™

  • αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™ dblk_t
  • សអរ mblk_t
  • αž˜αž»αžαž„αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŸαžΆαžš mblk_t
  • αž‡αž½αžšαž‡αž½αžš_t
  • αž’αž“αž»αž‚αž˜αž“αŸβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹αž‡αž½αžš queue_t
  • αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžαž˜αŸ’αžšαž„
  • αž…αŸ†αžŽαž»αž…αžŸαž‰αŸ’αž‰αžΆαž“αŸƒαž€αŸ’αžšαžΆαž αŸ’αžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™
  • αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž†αžΆαž€αžšαž”αžŸαŸ‹ ticker
  • Bufferizer (MSBufferizer)
  • αž˜αž»αžαž„αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ MSBufferizer

αž€αŸ’αž“αž»αž„β€‹αž’αžαžΈαžαž€αžΆαž› αž’αžαŸ’αžαž”αž‘ αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžαž˜αŸ’αžšαž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž“αžΉαž„αž•αŸ’αžαŸ„αžαž›αžΎαž™αž“αŸ’αžαž€αžΆαžšαžαžΆαž„αž€αŸ’αž“αž»αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαžœαžΆαž„αžαž˜αŸ’αžšαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αŸ” αžœαžΆαž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαžαž˜αŸ’αžšαž„αžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αžŠαŸ„αž™αž˜αžΆαž“αž€αžΆαžšαžαž·αžαžαŸ†αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αžαž·αž…αž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αžαŸ”

αž™αž“αŸ’αžαž€αžΆαžšαž“αŸƒαž…αž›αž“αžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™

αž…αž›αž“αžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαžΆαž™αž˜αŸαžŒαŸ€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž”αŸ’αžšαžΎαž‡αž½αžšαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžŠαŸ„αž™αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž‡αž½αžš_t. αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαž“αŸƒαžŸαžΆαžšαžŠαžΌαž…αž‡αžΆ mblk_tαžŠαŸ‚αž›αžαŸ’αž›αž½αž“αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαž‰αŸ’αž‰αžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αžαŸ‚αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αžŸαžΆαžšαž˜αž»αž“ αžŸαžΆαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž“αž·αž„αž‘αŸ…αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‡αžΆαž–αž·αžŸαŸαžŸαžαžΆ αžœαžΆαž€αŸαž˜αžΆαž“αžœαžΆαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αžŸαžΆαžšαž“αŸƒαž”αŸ’αžšαž—αŸαž‘αžŠαžΌαž…αž‚αŸ’αž“αžΆ αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžšαŸ€αž”αž…αŸ†αž”αž‰αŸ’αž‡αžΈαžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ‚αž˜αž½αž™αŸ” αž™αžΎαž„αž“αžΉαž„αž αŸ…αž€αŸ’αžšαž»αž˜αžŸαžΆαžšαžŠαŸ‚αž›αžšαž½αž”αžšαž½αž˜αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž”αž‰αŸ’αž‡αžΈαž”αŸ‚αž”αž“αŸαŸ‡αžαžΆαž‡αžΆ tuple αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž’αžΆαžαž»αžŽαžΆαž˜αž½αž™αž“αŸƒαž‡αž½αžšαž’αžΆαž…αž‡αžΆαžŸαžΆαžšαžαŸ‚αž˜αž½αž™ mblk_tαž αžΎαž™αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž€αŸ’αž”αžΆαž›αž“αŸƒαžŸαžΆαžš tuple mblk_t. សអរ tuple αž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αž˜αžΆαž“αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžœαž½αžŠαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž™αžΎαž„αž“αžΉαž„αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž’αŸ†αž–αžΈαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž› tuples αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αž”αž“αŸ’αžαž·αž…αŸ”

αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžαžΆαž„αž›αžΎ αžŸαžΆαžšαžαŸ’αž›αž½αž“αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αžœαžΆαž˜αžΆαž“αžαŸ‚αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αž€αžΆαž“αŸ‹αžαŸ†αž”αž“αŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŠαŸ‚αž›αž”αŸ’αž›αž»αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž“αŸαŸ‡ αžšαžΌαž”αž—αžΆαž–αžšαž½αž˜αž“αŸƒαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž•αŸ’αžŸαžΆαž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž‚αžΊαž“αžΉαž€αžƒαžΎαž‰αžŠαž›αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αž‘αŸ’αžœαžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžαž»αž€αŸ’αž€αžαžΆ "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_prev, b_αž”αž“αŸ’αž‘αžΆαž”αŸ‹αžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž”αž…αŸ†αž”αž‰αŸ’αž‡αžΈαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ’αžœαŸαžŠαž„ (αžŠαŸ‚αž›αž‡αžΆαž‡αž½αžš αž‡αž½αžš_t).

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž‘αŸ’αžšαž“αž·αž…αž˜αž€ b_contαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžαŸ‚αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαžΆαžšαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž“αŸƒ tuple αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαžΆαžšαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸ…αž€αŸ’αž“αž»αž„ 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 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸƒαž‘αŸ†αž αŸ†αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αž‘αŸ†αž αŸ†, αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž‘αžΈαž–αžΈαžš - pri αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸαŸ‡αž‘αŸαŸ” αžœαžΆαž‚αž½αžšαžαŸ‚αž“αŸ…αžαŸ‚αžŸαžΌαž“αŸ’αž™αŸ” αž€αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžšαž”αžŸαŸ‹αž˜αž»αžαž„αžΆαžš αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαžΆαžšαžαŸ’αž˜αžΈ αž αžΎαž™αž˜αž»αžαž„αžΆαžšαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ… 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);

αžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž› data subfolder αž‚αžΊαž‡αžΆαž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αž€αžΆαž“αŸ‹αž”αŸ’αžšαž—αž–αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αž·αž„ αž‘αŸ†αž αŸ† - αž‘αŸ†αž αŸ†αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ”
αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αž…αŸ†αžŽαž»αž…αžŸαžšαžŸαŸαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž…αž„αŸ’αž’αž»αž›αž˜αŸ’αžαž„αž‘αŸ€αžαž‘αŸ…αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαž•αŸ’αž‘αŸƒαž‘αŸ†αž“αŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αŸ–

msg->b_wptr = msg->b_wptr + size

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŸαžΆαžšαž–αžΈαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž…αž˜αŸ’αž›αž„ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαŸ–

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

αž˜αž»αžαž„αžΆαžš αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αž„αŸ’αž€αžΎαžαžŸαžΆαžš αž“αž·αž„αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒαž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αžΉαž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αŸ’αžšαž“αž·αž…αžšαž”αžŸαŸ‹αžœαžΆαž‘αŸ…αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ buf αŸ”. αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž·αž“αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžœαžΆαž›αž”αž‹αž˜αž€αžαžΆαž“αŸƒαž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŠαžΌαž…αž€αžšαžŽαžΈαž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αžΆαž“αž˜αž»αžαž„αžΆαžš datab_alloc(). αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžŠαŸ‚αž›αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž˜αž»αžαž„αžΆαžšαž“αžΉαž„αž“αŸ…αžŠαžŠαŸ‚αž› αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™αž–αžΈαž‘αŸ’αžšαž“αž·αž…αžœαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž”αž‹αž˜αž€αžαžΆαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžαŸ’αž˜αžΈαž“αŸƒαž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž αžΎαž™αž“αŸ„αŸ‡αžαžΆαž˜αžŸαžΆαžšαŸ”

αž‘αŸ…αžŸαžΆαžšαž˜αž½αž™αŸ” mblk_t αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž…αŸ’αžšαžΎαž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž˜αž»αžαž„αžΆαžšαŸ–

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

mp - αžŸαžΆαžšαžŠαŸ‚αž›αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αŸ”
data subfolder - αž…αž„αŸ’αž’αž»αž›αž‘αŸ…αž”αŸ’αž›αž»αž€ αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžŸαžΆαžšαŸ”
αž‘αŸ†αž αŸ† - αž‘αŸ†αž αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™;
αž”αž“αŸ’αž‘αŸ‡ - αž‘αž„αŸ‹αž‡αžΆαžαž·αžŠαŸ‚αž›αž‘αŸ†αž αŸ†αž“αŸƒαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαž˜αŸ’αžšαžΉαž˜αžαžΆαž˜αž–αŸ’αžšαŸ†αžŠαŸ‚αž“ 4 αž”αŸƒ (αž”αž“αŸ’αž‘αŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž›αŸαžαžŸαžΌαž“αŸ’αž™)αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž€αž“αŸ’αž›αŸ‚αž„αž‘αŸ†αž“αŸαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ αž“αŸ„αŸ‡αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž˜αžΈαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αž—αŸ’αž‡αžΆαž”αŸ‹αž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αžΆαž“αžšαž½αž…αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αž˜αžΆαž“β€‹αž‘αŸ†αž αŸ†β€‹αž‘αŸ†αž“αŸαžšβ€‹αžαž·αž…β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž•αŸ’αž‘αž»αž€β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αžŸαžΆαžšβ€‹αž‡αžΆαž„ αž‘αŸ†αž αŸ†αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αžŸαžΆαžšαžαŸ’αž˜αžΈαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αŸ†αž αŸ†αž•αŸ’αž‘αž»αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹ αž αžΎαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αž‘αŸ…αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αžŸαžΆαžšβ€‹αžαŸ’αž˜αžΈβ€‹αžŠαŸ‚αž›β€‹αž—αŸ’αž‡αžΆαž”αŸ‹β€‹αž‘αŸ…β€‹αž“αžΉαž„β€‹αžŸαžΆαžšβ€‹αžŠαžΎαž˜β€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎβ€‹αž‘αŸ’αžšαž“αž·αž… b_cont. αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αžŸαžΆαžšαž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆ tuple αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸ… tuple αž“αŸ„αŸ‡αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαŸ–

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

αž“αžΆαž„αž“αžΉαž„αžšαž€αžƒαžΎαž‰αžŸαžΆαžšαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸ…αž€αŸ’αž“αž»αž„ tuple (αž‚αžΆαžαŸ‹αž˜αžΆαž“ b_cont αž“αžΉαž„αž‘αž»αž€αž‡αžΆαž˜αŸ„αžƒαŸˆ) αž αžΎαž™αž“αžΉαž„αž αŸ…αž˜αž»αžαž„αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαžΆαžšαž“αŸαŸ‡αŸ” αž§αž”αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’().

αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαž‘αŸ†αž αŸ†αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžΆαžš ឬ tuple αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαŸ–

int msgdsize(const mblk_t *mp);

αžœαžΆαž“αžΉαž„αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αžαžΆαž˜αžšαž™αŸˆαžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ tuple αž αžΎαž™αžαŸ’αžšαž‘αž”αŸ‹αž…αŸ†αž“αž½αž“αžŸαžšαž»αž”αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸƒαžŸαžΆαžšαž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαžΆαžšαž“αžΈαž˜αž½αž™αŸ— αž…αŸ†αž“αž½αž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžŽαž“αžΆαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

 mp->b_wptr - mp->b_rptr

αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αžŸαŸ†αž–αžΈαžš tuple αžŸαžΌαž˜αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαŸ–

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

αž“αžΆαž„αž”αž“αŸ’αžαŸ‚αž˜ tuple αžαŸ’αž˜αžΈ αž‘αŸ…αž€αž“αŸ’αž‘αž»αž™αž“αŸƒ tuple αž“αŸαŸ‡αŸ” mp αž αžΎαž™αžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αžŸαžΆαžšαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒ tuple αž›αž‘αŸ’αž’αž•αž›αŸ”

αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹ tuple αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αž‘αŸ…αž‡αžΆαžŸαžΆαžšαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αž›αž»αž€αžαŸ‚αž˜αž½αž™αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž˜αž»αžαž„αžΆαžšαŸ–

void msgpullup(mblk_t *mp,int len);

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ len αŸ” αž‚αžΊ -1 αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž‘αŸ†αž αŸ†αž“αŸƒαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎ len αŸ” αž‚αžΊαž‡αžΆαž›αŸαžαžœαž·αž‡αŸ’αž‡αž˜αžΆαž“ αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž“αŸƒαž‘αŸ†αž αŸ†αž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αž αžΎαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαžΆαžš tuple αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž’αžŸαŸ‹ αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž“αžΉαž„αžˆαž”αŸ‹αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” αžŸαžΆαžšαžŠαŸ†αž”αžΌαž„αž“αŸƒ tuple αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž‘αŸ†αž αŸ†αžαŸ’αž˜αžΈαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž…αž˜αŸ’αž›αž„αŸ” αžŸαžΆαžšαžŠαŸ‚αž›αž“αŸ…αžŸαŸαžŸαžŸαž›αŸ‹αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž” αž αžΎαž™αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž”αžΆαž“αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αž αŸŠαžΆαžœαž·αž‰αŸ”

αž“αŸ…αž–αŸαž›αž›αž»αž”αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ mblk_t αž…αŸ†αž“αž½αž“αž™αŸ„αž„αž“αŸƒαž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αžŽαž“αžΈαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸ…αž–αŸαž›αž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘ freeb() αžœαžΆαž”αŸ’αžšαŸ‚αž‡αžΆαžŸαžΌαž“αŸ’αž™ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αžšαž½αž˜αž‡αžΆαž˜αž½αž™αž§αž‘αžΆαž αžšαžŽαŸ mblk_tαžŠαŸ‚αž›αž…αž„αŸ’αž’αž»αž›αž‘αŸ…αžœαžΆαŸ”

αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆαž›αžŸαžΆαžšαžαŸ’αž˜αžΈαŸ–

void mblk_init(mblk_t *mp);

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸ…αžŸαžΆαžšαŸ–

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

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž˜αžΈαž˜αž·αž“αžŸαž˜αž“αžΉαž„αž‘αŸ†αž αŸ†αž‘αŸ†αž“αŸαžšαž“αŸƒαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαžΆαžšαž‘αŸ αž“αŸ„αŸ‡αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž“αŸƒαž‘αŸ†αž αŸ†αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αžŸαžΆαžš (αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž€αŸ’αž“αž»αž„αžŸαžΆαžšαžŠαŸ†αž”αžΌαž„) αž“αž·αž„ αžŸαžΆαžšαž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆ tuple αŸ”

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž½αž™αž‘αŸ… tupleαŸ–

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

αž˜αž»αžαž„αžΆαžšαž αŸ… appendb() αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž˜αž½αž™αŸ”

αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΌαžœ tuple αž–αžΈαžšαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž˜αž½αž™:

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

សអរ αžαŸ’αž˜αžΈ αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™ mp.

αž”αž„αŸ’αž€αžΎαžαž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž“αŸƒαžŸαžΆαžšαžαŸ‚αž˜αž½αž™αŸ–

mblk_t *copyb(const mblk_t *mp);

αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž–αŸαž‰αž›αŸαž‰αž“αŸƒ tuple αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ–

mblk_t *copymsg(const mblk_t *mp);

αž’αžΆαžαž»αž“αŸƒ tuple αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αžŠαŸ„αž™αž˜αž»αžαž„αžΆαžš copyb().

αž”αž„αŸ’αž€αžΎαžαž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαžŸαžΆαžšαž˜αž½αž™αŸ” mblk_t. αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž‰αŸ’αž‡αžšαž™αŸ„αž„αžšαž”αžŸαŸ‹αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΎαž“αž‘αžΎαž„ db_ref:

mblk_t *dupb(mblk_t *mp);

αž€αžΆαžšαž’αŸ’αžœαžΎαž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αžŸαŸ’αžšαžΆαž›αž“αŸƒ tuple αŸ” αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αž‘αŸ αž˜αžΆαž“αžαŸ‚αž”αž‰αŸ’αž‡αžšαž™αŸ„αž„αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž“ db_ref:

mblk_t *dupmsg(mblk_t* m);

αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒ tuple αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžŸαžΆαžšαžαŸ‚αž˜αž½αž™αŸ–

void msgpullup(mblk_t *mp,size_t len);

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ len αŸ” αž‚αžΊ -1 αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž‘αŸ†αž αŸ†αž“αŸƒαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ”

αž€αŸ†αž–αž»αž„αž›αž»αž”αžŸαžΆαžš, tupleαŸ–

void freemsg(mblk_t *mp);

αž…αŸ†αž“αž½αž“αž™αŸ„αž„αž“αŸƒαž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αžŠαŸ„αž™αž˜αž½αž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαžˆαžΆαž“αžŠαž›αŸ‹αžŸαžΌαž“αŸ’αž™ αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αž•αž„αžŠαŸ‚αžšαŸ”

αž€αžΆαžšαž‚αžŽαž“αžΆαž…αŸ†αž“αž½αž“αžŸαžšαž»αž”αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžΆαžšαž¬ tuple αŸ”

size_t msgdsize(const mblk_t *mp);

αž‘αžΆαž‰αž™αž€αžŸαžΆαžšαž–αžΈαž€αž“αŸ’αž‘αž»αž™αž“αŸƒαž‡αž½αžšαŸ–

mblk_t *ms_queue_peek_last (q);

αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž˜αžΆαžαž·αž€αžΆαž“αŸƒαžœαžΆαž›αžŠαŸ‚αž›αž”αžΆαž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž“αŸƒαžŸαžΆαžšαž˜αž½αž™αž‘αŸ…αžŸαžΆαžšαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž (αžαžΆαž˜αž–αž·αž αžœαžΆαž›αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αžΆαž“αž‘αž„αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αž’αŸ’αž“αž€αž•αŸ’αžŸαžΆαž™αž–αŸαžαŸŒαž˜αžΆαž“)αŸ–

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

αž‡αž½αžš αž‡αž½αžš_t

αž‡αž½αžšβ€‹αžŸαžΆαžšβ€‹αž€αŸ’αž“αž»αž„β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž•αŸ’αžŸαžΆαž™β€‹αž˜αŸαžŒαŸ€β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž’αž“αž»αžœαžαŸ’αžβ€‹αž‡αžΆβ€‹αžšαž„αŸ’αžœαž„αŸ‹β€‹αž”αž‰αŸ’αž‡αžΈβ€‹αžŠαŸ‚αž›β€‹αž—αŸ’αž‡αžΆαž”αŸ‹β€‹αž‘αŸ’αžœαŸβ€‹αžŠαž„αŸ” αž’αžΆαžαž»αž”αž‰αŸ’αž‡αžΈαž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αžΆαž“αž‚αŸ†αžšαžΌαžŸαž‰αŸ’αž‰αžΆαŸ” αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž˜αžΆαž“αžαŸ‚αž…αž„αŸ’αž’αž»αž›αž‘αŸ…αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž‡αžΆαžœαŸαž“αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž›αž½αž“αž―αž„αž“αŸ…αžαŸ‚αž˜αž·αž“αž˜αžΆαž“αž…αž›αž“αžΆαŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž˜αžΆαž“αžαŸ‚αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž–αž½αž€αžœαžΆαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαŸ”
αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‡αž½αžš αž‡αž½αžš_t, αž”αž„αŸ’αž αžΆαž‰αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

typedef struct _queue
{
   mblk_t _q_stopper; /* "Π₯олостой" элСмСнт ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для управлСния ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ. ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ (qinit()) Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π½Π° Π½Π΅Π³ΠΎ самого. */
   int q_mcount;        // ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
} queue_t;

αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αžΆαž“αžœαžΆαž›αž˜αž½αž™ - αž‘αŸ’αžšαž“αž·αž…αž˜αž½αž™αŸ” _q_αžˆαž”αŸ‹ αžœαžΆαž™ *mblk_t αžœαžΆαž…αž„αŸ’αž’αž»αž›αž‘αŸ…αž’αžΆαžαž»αž‘αžΈαž˜αž½αž™ (សអរ) αž€αŸ’αž“αž»αž„αž‡αž½αžšαŸ” αžœαžΆαž›αž‘αžΈαž–αžΈαžšαž“αŸƒαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αžΊαž‡αžΆαž€αžΆαžšαžšαžΆαž”αŸ‹αžŸαžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžšαŸ”
αžšαžΌαž”αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž‡αž½αžšαžˆαŸ’αž˜αŸ„αŸ‡ q1 αžŠαŸ‚αž›αž˜αžΆαž“αžŸαžΆαžš 4 m1, m2, m3, m4 αŸ”
αž€αžΆαžšαžšαž»αž€αžšαž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Mediastreamer2 VoIP αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 11
αžšαžΌαž”αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž”αž„αŸ’αž αžΆαž‰αž‡αž½αžšαž˜αž½αž™αžˆαŸ’αž˜αŸ„αŸ‡ q1 αžŠαŸ‚αž›αž˜αžΆαž“αžŸαžΆαžš 4 m1,m2,m3,m4 αŸ” សអរ m2 αž‚αžΊαž‡αžΆαž€αŸ’αž”αžΆαž›αžšαž”αžŸαŸ‹ tuple αžŠαŸ‚αž›αž˜αžΆαž“αžŸαžΆαžšαž–αžΈαžšαž‘αŸ€αž m2_1 αž“αž·αž„ m2_2 αŸ”

αž€αžΆαžšαžšαž»αž€αžšαž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Mediastreamer2 VoIP αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 11

αž’αž“αž»αž‚αž˜αž“αŸβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹αž‡αž½αžš queue_t

αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αž½αžšαŸ–

void qinit(queue_t *q);

αžœαžΆαž› _q_αžˆαž”αŸ‹ (αžαž‘αŸ…αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž αŸ…αžœαžΆαžαžΆ "αžˆαž”αŸ‹") αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ„αž™αž˜αž»αžαž„αžΆαžš mblk_init()αž’αžΆαžαž»αž˜αž»αž“αžšαž”αžŸαŸ‹αžœαžΆ αž“αž·αž„αž‘αŸ’αžšαž“αž·αž…αž’αžΆαžαž»αž”αž“αŸ’αž‘αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαžŠαžΎαž˜αŸ’αž”αžΈαž…αž„αŸ’αž’αž»αž›αž‘αŸ…αžαŸ’αž›αž½αž“αžœαžΆαž•αŸ’αž‘αžΆαž›αŸ‹αŸ” αž€αžΆαžšαžšαžΆαž”αŸ‹αž’αžΆαžαž»αž‡αž½αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‘αžΎαž„αžœαž·αž‰αž‘αŸ…αžŸαžΌαž“αŸ’αž™αŸ”

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž’αžΆαžαž»αžαŸ’αž˜αžΈ (សអរ)αŸ–

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

αž’αžΆαžαž»αžαŸ’αž˜αžΈαŸ” m αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž‘αŸ…β€‹αžαžΆαž„β€‹αž…αž»αž„β€‹αž“αŸƒβ€‹αž”αž‰αŸ’αž‡αžΈ αž‘αŸ’αžšαž“αž·αž…β€‹αž’αžΆαžαž»β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž€αŸ‚β€‹αžŸαž˜αŸ’αžšαž½αž› αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹ stopper αž€αŸ’αž›αžΆαž™β€‹αž‡αžΆβ€‹αž’αžΆαžαž»β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžœαžΆ αž αžΎαž™β€‹αžœαžΆβ€‹αž€αŸ’αž›αžΆαž™β€‹αž‡αžΆβ€‹αž’αžΆαžαž»β€‹αž˜αž»αž“β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ stopper αŸ” αž€αžΆαžšαžšαžΆαž”αŸ‹αž’αžΆαžαž»αž‡αž½αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž“αŸ”

αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž’αžΆαžαž»αž–αžΈαž‡αž½αžšαŸ–

mblk_t * getq(queue_t *q); 

αžŸαžΆαžšαžŠαŸ‚αž›αž˜αž€αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαŸ’αžαž»αž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž‰αž™αž€αž˜αž€αžœαž·αž‰ αž αžΎαž™αž€αžΆαžšαžšαžΆαž”αŸ‹αž’αžΆαžαž»αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž˜αžΆαž“αž’αžΆαžαž»αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžšαž‘αŸαž›αžΎαž€αž›αŸ‚αž„αžαŸ‚ stopper αž“αŸ„αŸ‡ 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).

αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžαž˜αŸ’αžšαž„

αž‡αž½αžšαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžαžΆαž„αž›αžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž‡αžΌαž“αžŸαžΆαžšαž–αžΈαžαž˜αŸ’αžšαž„αž˜αž½αž™αž‘αŸ…αžαž˜αŸ’αžšαž„αž˜αž½αž™αž‘αŸ€αž αž¬αž–αžΈαžαž˜αŸ’αžšαž„αž˜αž½αž™αž‘αŸ…αžαž˜αŸ’αžšαž„αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αžαž˜αŸ’αžšαž„ αž“αž·αž„αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž”αž„αŸ’αž€αžΎαžαž‡αžΆαž€αŸ’αžšαžΆαž αŸ’αžœαžŠαžΉαž€αž“αžΆαŸ†αŸ” αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž¬αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαžαž˜αŸ’αžšαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαž–αžΆαž€αŸ’αž™αž‘αžΌαž‘αŸ… "pin" αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž›αŸ†αžŠαžΆαž”αŸ‹αžŠαŸ‚αž›αžαž˜αŸ’αžšαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€ αž’αŸ’αž“αž€αž•αŸ’αžŸαžΆαž™αž–αŸαžαŸŒαž˜αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‚αŸ†αž“αž·αžαž“αŸƒ "αž…αŸ†αžŽαž»αž…αžŸαž‰αŸ’αž‰αžΆ" αŸ” αž…αŸ†αžŽαž»αž…αžŸαž‰αŸ’αž‰αžΆαž‚αžΊαž‡αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ _MSCPPointαžŠαŸ‚αž›αž•αŸ’αž‘αž»αž€αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αžαž˜αŸ’αžšαž„ αž“αž·αž„αž…αŸ†αž“αž½αž“αž˜αŸ’αž‡αž»αž›αž˜αž½αž™αžšαž”αžŸαŸ‹αžœαžΆ αžαžΆαž˜αž“αŸ„αŸ‡ αžœαžΆαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž“αŸƒαž’αžΆαžαž»αž”αž‰αŸ’αž…αžΌαž› αž¬αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαžαž˜αŸ’αžšαž„αŸ”

αž…αŸ†αžŽαž»αž…αžŸαž‰αŸ’αž‰αžΆαž“αŸƒαž€αŸ’αžšαžΆαž αŸ’αžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™

typedef struct _MSCPoint{
struct _MSFilter *filter; // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ мСдиастримСра.
int pin;                        // НомСр ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π²Ρ…ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, Ρ‚.Π΅. ΠΏΠΈΠ½.
} MSCPoint;

αž˜αŸ’αž‡αž»αž›αžαž˜αŸ’αžšαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž›αŸαžαžŠαŸ„αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαžŸαžΌαž“αŸ’αž™αŸ”

αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αŸ’αž‡αž»αž›αž–αžΈαžšαžŠαŸ„αž™αž‡αž½αžšαžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžŠαŸ„αž™αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ _MSQueueαžŠαŸ‚αž›αž˜αžΆαž“αž‡αž½αžšαžŸαžΆαžš αž“αž·αž„αž…αž„αŸ’αž’αž»αž›αž‘αŸ…αž…αŸ†αžŽαž»αž…αžŸαž‰αŸ’αž‰αžΆαž–αžΈαžšαžŠαŸ‚αž›αžœαžΆαž—αŸ’αž‡αžΆαž”αŸ‹αŸ–

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

αž™αžΎαž„αž“αžΉαž„αž αŸ…αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸαŸ‡αžαžΆαž‡αžΆαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αžŸαž‰αŸ’αž‰αžΆαŸ” αžαž˜αŸ’αžšαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αžαžΆαžšαžΆαž„αž“αŸƒαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž”αž‰αŸ’αž…αžΌαž› αž“αž·αž„αžαžΆαžšαžΆαž„αž“αŸƒαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž›αž‘αŸ’αž’αž•αž› (MSQueue) αž‘αŸ†αž αŸ†αž“αŸƒαžαžΆαžšαžΆαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαžαž˜αŸ’αžšαž„ αž™αžΎαž„αž”αžΆαž“αž’αŸ’αžœαžΎαžšαž½αž…αž αžΎαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαž’αžαŸαžšαžŠαŸ‚αž›αž”αžΆαž“αž“αžΆαŸ†αž…αŸαž‰αž“αŸƒαž”αŸ’αžšαž—αŸαž‘ MSFilterDescαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαžαž˜αŸ’αžšαž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžαž˜αŸ’αžšαž„αžŽαžΆαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαžΆαž™αž˜αŸαžŒαŸ€ αžαž˜αŸ’αžšαž„ MSF:


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 αžŠαŸ„αž™β€‹αž’αž“αž»αž›αŸ„αž˜β€‹αžαžΆαž˜β€‹αž‚αž˜αŸ’αžšαŸ„αž„β€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„ (αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž˜αž·αž“β€‹αž”αžΆαž“β€‹αž—αŸ’αž‡αžΆαž”αŸ‹β€‹αžŸαž‰αŸ’αž‰αžΆβ€‹αž’αžΈαž€) αžŠαŸ„αž™β€‹αž αŸαžαž»β€‹αž“αŸαŸ‡β€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž€αŸ’αžšαžΆαž αŸ’αžœβ€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αžŠαžΉαž€αž“αžΆαŸ†β€‹αžŠαŸ‚αž›β€‹αž‡αžΆβ€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αž“αŸƒβ€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αžαž˜αŸ’αžšαž„ MSFαž αžΎαž™αž‚αŸ‚αž˜αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹ MSQueue.

αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž†αžΆαž€αžšαž”αžŸαŸ‹ ticker

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžαžΆ ticker αž‚αžΊαž‡αžΆαžαž˜αŸ’αžšαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αž–αž“αŸƒαž†αŸ’αž€ αžœαžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž–αž·αžαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž’αŸ†αž–αžΈαžœαžΆαž“αŸ„αŸ‡αž‘αŸαŸ” αžŸαž‰αŸ’αž‰αžΆαž’αžΈαž€αž‚αžΊαž‡αžΆαžœαžαŸ’αžαž»αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž»αžαž„αžΆαžšαž“αŸ…αž›αžΎαž“αžΆαž‘αž·αž€αžΆ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš() αžαž˜αŸ’αžšαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαžŸαŸ€αž‚αŸ’αžœαžΈ (αž€αŸ’αžšαžΆαž αŸ’αžœ) αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αŸ” αž“αŸ…αž–αŸαž›αž™αžΎαž„αž—αŸ’αž‡αžΆαž”αŸ‹ ticker αž‘αŸ…αž“αžΉαž„αžαž˜αŸ’αžšαž„αž€αŸ’αžšαžΆαž αŸ’αžœαž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ C αž™αžΎαž„αž”αž„αŸ’αž αžΆαž‰αžŸαž‰αŸ’αž‰αžΆαž’αžΈαž€αž€αŸ’αžšαžΆαž αŸ’αžœαžŠαŸ‚αž›αžœαžΆαž“αžΉαž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αžΆαž”αŸ‹αž–αžΈαž–αŸαž›αž“αŸαŸ‡αžαž‘αŸ…αžšαž αžΌαžαžŠαž›αŸ‹αž™αžΎαž„αž”αž·αž‘αžœαžΆαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž—αŸ’αž‡αžΆαž”αŸ‹ αž’αžΈαž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αŸ’αžšαžΆαž αŸ’αžœαžŠαŸ‚αž›αž”αŸ’αžšαž‚αž›αŸ‹αž±αŸ’αž™αž€αžΆαžšαžαŸ‚αž‘αžΆαŸ†αžšαž”αžŸαŸ‹αžœαžΆ αžŠαŸ„αž™αž…αž„αž€αŸ’αžšαž„αž”αž‰αŸ’αž‡αžΈαžαž˜αŸ’αžšαž„αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αžœαžΆαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™ "αžšαžΆαž”αŸ‹" αžαž˜αŸ’αžšαž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαž–αžΈαžšαžŠαž„ αžœαžΆαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαž˜αŸ’αžšαž„αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ„αž™αžŠαžΆαž€αŸ‹αž”αŸ’αžšαž’αž”αŸ‹αž’αžΈαž€αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž½αž€αžœαžΆ αž”αžΆαž“αžƒαžΎαž‰. αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž”αŸ’αžšαžΎαžαžΆαžšαžΆαž„αžαŸ†αžŽαžŠαŸ‚αž›αžαž˜αŸ’αžšαž„αž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αŸ”

αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž‘αŸαžŸαž…αžšαžŽαŸαžŽαŸ‚αž“αžΆαŸ†αž“αŸƒαž€αŸ’αžšαžΆαž αŸ’αžœαž“αŸαŸ‡ αž’αžΈαž€αžƒαžΊαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžαž˜αŸ’αžšαž„αž˜αžΆαž“αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž˜αž½αž™ αžŠαŸ‚αž›αžŠαžΎαžšαžαž½αž‡αžΆαž”αŸ’αžšαž—αž–αž“αŸƒαž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž˜αžΆαž“αž‘αŸ αž“αŸ„αŸ‡αž€αŸ’αžšαžΆαž αŸ’αžœαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž αžΎαž™αžŸαž“αŸ’αž›αžΉαž€αž†αŸ’αž“αŸ„αžαž‚αžΆαŸ†αž„αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αŸ’αžšαžΆαž αŸ’αžœαž”αŸ’αžšαŸ‚αžαžΆ "αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž˜αŸ’αžšαž„αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αžΈαž˜αž½αž™αŸ— αž˜αž»αžαž„αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αž±αŸ’αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž»αž“ (). αžŠαžšαžΆαž”αžŽαžΆαž–αŸαž›αž˜αž€αžŠαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžŠαŸ’αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹ (αžšαŸ€αž„αžšαžΆαž›αŸ‹ 10 αž˜αž·αž›αŸ’αž›αžΈαžœαž·αž“αžΆαž‘αžΈαžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜) αž’αžΈαž€αž αŸ…αž˜αž»αžαž„αžΆαžš αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš() αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž˜αŸ’αžšαž„αž”αŸ’αžšαž—αž–αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž–αžΈαž˜αž»αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž˜αŸ’αžšαž„αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαž˜αŸ’αžšαž„αž˜αžΆαž“αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž”αž‰αŸ’αž…αžΌαž› αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž»αžαž„αžΆαžš αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš() αž’αŸ’αžœαžΎαž˜αŸ’αžαž„αž‘αŸ€αžαžšαž αžΌαžαžŠαž›αŸ‹αž‡αž½αžšαž“αŸƒαžαŸ†αžŽαž”αž‰αŸ’αž…αžΌαž›αž‚αžΊαž‘αž‘αŸαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αžœαžΆαž”αž“αŸ’αžαž‘αŸ…αžαž˜αŸ’αžšαž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈ αž αžΎαž™ "រមូរ" αžœαžΆαžšαž αžΌαžαž‘αžΆαž›αŸ‹αžαŸ‚αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž˜αž·αž“αž˜αžΆαž“αžŸαžΆαžšαŸ” αžŸαŸ†αž”αž»αžαŸ’αžšαž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž–αžΈαžαž˜αŸ’αžšαž„αž˜αž½αž™αž‘αŸ…αžαž˜αŸ’αžšαž„αžšαž αžΌαžαžŠαž›αŸ‹αž”αž‰αŸ’αž‡αžΈαž”αž‰αŸ’αž…αž”αŸ‹αŸ” αž“αŸαŸ‡αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαžœαžŠαŸ’αžαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ… tuples αž αžΎαž™αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž’αž„αŸ’αž‚αž—αžΆαž–αž”αŸ‚αž”αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž’αŸ’αž“αž€αž•αŸ’αžŸαžΆαž™αž–αŸαžαŸŒαž˜αžΆαž“αŸ” αž‡αžΆαž‘αžΌαž‘αŸ… αž”αžšαž·αž˜αžΆαžŽαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž‘αžΆαž˜αž‘αžΆαžšαžŠαŸ„αž™αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αžαž˜αŸ’αžšαž„αž˜αž·αž“αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž‘αŸ αž αžΎαž™αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž–αž αž»αž‚αž»αžŽαž“αŸƒαž‘αŸ†αž αŸ†αž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αž“αŸ…αž–αŸαž›αž”αž‰αŸ’αž…αžΌαž›αž“αŸ„αŸ‡αž‘αŸαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŸαžšαžŸαŸαžšαžαž˜αŸ’αžšαž„αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ†αž›αŸ‚αž„ Fourier αž›αžΏαž“ αžŠαŸ‚αž›αžαžΆαž˜αž“αž·αž™αž˜αž“αŸαž™αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αžαŸ‚αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž‘αŸ†αž αŸ†αžšαž”αžŸαŸ‹αžœαžΆαž˜αžΆαž“αžαžΆαž˜αž–αž›αž–αžΈαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžŸαžΌαž˜αž±αŸ’αž™αžœαžΆαž˜αžΆαž“αž…αŸ†αž“αž½αž“ 512 αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž”αžŽαŸ’αžαžΆαž‰αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘ αž“αŸ„αŸ‡αž”αžŽαŸ’αžαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸƒαžŸαžΆαžšαž“αžΈαž˜αž½αž™αŸ—αž“αŸ…αž–αŸαž›αž”αž‰αŸ’αž…αžΌαž›αž“αžΉαž„αž“αžΆαŸ†αž˜αž€αž™αžΎαž„αž“αžΌαžœαž‚αŸ†αžšαžΌαžŸαž‰αŸ’αž‰αžΆαž…αŸ†αž“αž½αž“ 160 αŸ” αžœαžΆαž‘αžΆαž€αŸ‹αž‘αžΆαž‰αž˜αž·αž“αž±αŸ’αž™αž”αŸ’αžšαž˜αžΌαž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αžšαž αžΌαžαžŠαž›αŸ‹αž…αŸ†αž“αž½αž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž€αžΆαžšαž”αŸ‰αŸ‡αž‘αž„αŸ’αž‚αž·αž…αž“αžΉαž„αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž˜αž½αž™αžŸαž‰αŸ’αž‰αžΆαž’αžΈαž€ αžŠαŸ‚αž›αž“αžΉαž„αž˜αž·αž“αž‡αŸ„αž‚αž‡αŸαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αžšαž˜αžΌαžšαžαž˜αŸ’αžšαž„αžšαž αžΌαžαžŠαž›αŸ‹αžαŸ†αžŽαž”αž‰αŸ’αž…αžΌαž›αž‘αž‘αŸαŸ” αž–αžΈαž˜αž»αž“αž™αžΎαž„αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸαŸ‡αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‘αžΈαž”αžΈαž“αŸƒαžαž˜αŸ’αžšαž„αŸ” αž™αŸ„αž„αžαžΆαž˜αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸαŸ‡ αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αžαž˜αŸ’αžšαž„αžαŸ’αžšαžΌαžœαžαŸ‚αž™αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž–αžΈαž‡αž½αžšαž”αž‰αŸ’αž…αžΌαž›αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αžαžœαžΆαž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž™αž€αžαŸ‚ 512 αž‚αŸ†αžšαžΌαž–αžΈαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž”αžΆαž“αž‘αŸαž–αŸ’αžšαŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž™αž€αžαŸ‚αž”αŸ’αž›αž»αž€αž‘αžΆαŸ†αž„αž˜αžΌαž›αž–αŸ„αž›αž‚αžΊαž§αŸ” αžαž˜αŸ’αžšαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž™αž€αž‚αŸ†αžšαžΌαž…αŸ†αž“αž½αž“ 640 αž αžΎαž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ 512 αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αž½αž€αž‚αŸ αžŠαŸ‚αž›αž“αŸ…αžŸαŸαžŸαžŸαž›αŸ‹αž˜αž»αž“αž“αžΉαž„αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž•αŸ’αž“αŸ‚αž€αžαŸ’αž˜αžΈαž˜αž½αž™αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžαž˜αŸ’αžšαž„αžšαž”αžŸαŸ‹αž™αžΎαž„ αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž€αžΆαžšαž„αžΆαžšαž…αž˜αŸ’αž”αž„αžšαž”αžŸαŸ‹αžœαžΆ αžαŸ’αžšαžΌαžœαžαŸ‚αž•αŸ’αžαž›αŸ‹αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž‡αŸ†αž“αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž‰αŸ’αž…αžΌαž›αž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αŸ” αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαžΆαž™αž˜αŸαžŒαŸ€ αž“αž·αž„αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž‘αžΌαž‘αŸ…αž“αŸαŸ‡αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž»αž–αž·αžŸαŸαžŸαž˜αž½αž™ - MSBufferizer (bufferer) αžŠαŸ‚αž›αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎ tuples αŸ”

Bufferizer (MSBufferizer)

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžœαžαŸ’αžαž»αžŠαŸ‚αž›αž“αžΉαž„αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αžαž˜αŸ’αžšαž„ αž αžΎαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αž‰αŸ’αž‡αžΌαž“αžœαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž—αŸ’αž›αžΆαž˜αŸ—αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž…αŸ†αž“αž½αž“αž–αŸαžαŸŒαž˜αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžαž˜αŸ’αžšαž„αŸ” αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž€αŸ†αž–αž»αž„αž”αŸ’αžšαž˜αžΌαž›αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžαž˜αŸ’αžšαž„αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž‘αŸ†αž“αŸαžš αžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαžΆαž˜αž–αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αžαž½αžšαž€αŸ’αž”αžΆαž›αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαžšαžΆαž”αžŽαžΆαž˜αž»αžαž„αžΆαžšαž’αžΆαž“αž–αžΈαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžαŸ’αžšαž‘αž”αŸ‹αžαž˜αŸ’αž›αŸƒαž•αŸ’αžŸαŸαž„αž–αžΈαžŸαžΌαž“αŸ’αž™ αž˜αž»αžαž„αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš() αžšαž”αžŸαŸ‹αžαž˜αŸ’αžšαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž™αž€ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž“αŸƒαž‘αŸ†αž αŸ†αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžš αžšαž αžΌαžαžŠαž›αŸ‹αžœαžΆαž’αžŸαŸ‹αŸ”
αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž“αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαž“αŸ…αžαŸ‚αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžŠαŸ‚αž›αž‡αžΆαž’αžΆαžαž»αžŠαŸ†αž”αžΌαž„αž“αŸƒ 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); 

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‘αŸ†αž αŸ†αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž‚αžšαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž‚αžΊαžαž·αž…αž‡αžΆαž„αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž“αžΎαžŸαž»αŸ† (αž‘αž·αž“αŸ’αž“αž“αŸαž™) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αž»αžαž„αžΆαžšαžαŸ’αžšαž‘αž”αŸ‹αžŸαžΌαž“αŸ’αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αž‘αŸ…αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸαŸ” αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαžΆαž˜αž›αŸ†αžŠαžΆαž”αŸ‹αž›αŸ†αžŠαŸ„αž™αž–αžΈ tuples αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžαžαž…αž˜αŸ’αž›αž„ tuple αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αž αžΎαž™αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αž›αŸ‚αž„αŸ” αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸ…αž–αŸαž› datalen bytes αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‘αŸ†αž αŸ†αž‘αŸ†αž“αŸαžšαž’αžŸαŸ‹αž“αŸ…αž…αŸ†αž€αžŽαŸ’αžαžΆαž›αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžΆαžšαž“αŸαŸ‡ αž”αŸ’αž›αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž‘αŸ…αž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž…αž˜αŸ’αž›αž„αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αž‘αŸ…αž›αžΎαž€αž€αŸ’αžšαŸ„αž™ αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž“αžΉαž„αž”αž“αŸ’αžαž–αžΈαž…αŸ†αžŽαž»αž…αž“αŸαŸ‡αŸ”

αž€αžΆαžšαž’αžΆαž“αž…αŸ†αž“αž½αž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžαž»αŸ†αŸ–

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);  

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ bufferer αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ source code αž“αŸƒ media streamer filters αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž€αŸ’αž“αž»αž„αžαž˜αŸ’αžšαž„ MS_L16_ENC αžŠαŸ‚αž›αžšαŸ€αž”αž…αŸ†αž‘αžΎαž„αžœαž·αž‰αž”αŸƒαž€αŸ’αž“αž»αž„αž‚αŸ†αžšαžΌαž–αžΈαž›αŸ†αžŠαžΆαž”αŸ‹αž”αžŽαŸ’αžαžΆαž‰αž‘αŸ…αž›αŸ†αžŠαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αŸ– l16.c

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž™αžΎαž„αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž”αž‰αŸ’αž αžΆαž“αŸƒαž€αžΆαžšαž”αŸ‰αžΆαž“αŸ‹αž”αŸ’αžšαž˜αžΆαžŽαž€αžΆαžšαž•αŸ’αž‘αž»αž€ ticker αž“αž·αž„αžšαž”αŸ€αž”αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž›αžΎαžŸαž›αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ media streamerαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž‘αž·αž‰αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS, αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS πŸ”₯ αž‘αž·αž‰αžŸαŸαžœαžΆαž”αž„αŸ’αž αŸ„αŸ‡αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS | ProHoster