next up previous contents
Next: Egy STREAMS-et használó Up: Bevezetés Previous: A STREAMS rendszer

A STREAMS üzenettípusai

Üzeneteknek nevezzük a modulok láncán fel-le meno információkat, hibaüzeneteket, stb. Egy üzenet (message) egy vagy több üzenetblokkból áll. A STREAMS rendszerben egy üzenetblokk és az adatblokkok felépítését a következo strukturák tartalmazzák :

struct msgb {
     struct msgb *b_next;   /* queue-n kovetkezo message */
     struct msgb *b_prev;   /* elozo message a queuen */
     struct msgb *b_cont;   /* tovabbi messageblokkok */
     unsigned char *b_rptr; /* elso hasznos adatbyte*/
     unsigned char *b_wptr; /* utolso hasznos byte utani adatbyte */
     struct datab *b_datap; /* Adatblokkra pointer */
};

typedef struct msgb mblk_t;

struct datab {
     struct datab *db_freep; /* Belso hasznalatra */
     unsigned char *db_base; /* A buffer elso bytejara mutat */
     unsigned char *db_lim;  /* A buffer utolso utani byteja */
     unsigned char db_ref;   /* Hany uzenet mutat erre az adatra */
     unsigned char db_type;  /* Uzenettipus */
     unsigned char db_class; /* Belso hasznalatra */
};

typedef struct datab dblk_t;
Megjegyzés: az egyes üzenetek nem biztos, hogy a teljes adatblokkot lefoglalják. Azt, hogy egy üzenet értékes része az adatblokkon belül hol kezdodik az üzenetblokknak a b_rptr mezojébol tudható meg. Az üzenetblokk b_wptr mezoje pedig az adatblokk utolsó értékes byteja utáni bytera mutat.

A STREAMS megengedi az üzenetek osztályozását. A különféle üzenettípusokat felhasználva világosabb szerkezetu programokat írhatunk. Ekkor a STREAMS szolgáltatást végzo rutin leggyakrabban csak egy üzenettípusok szerinti elágazást tartalmaz, és egy-egy ág egy-egy üzenettípus feldolgozásáért felelos. A STREAMS nagyon sokféle üzenettípust ismer. Egy mblk_t *bp; módon deklarált üzenet típusát a bp->b_datap->db_type kifejezés adja meg.



next up previous contents
Next: Egy STREAMS-et használó Up: Bevezetés Previous: A STREAMS rendszer



Csizmazia Balazs
Tue Apr 2 00:06:27 MET DST 1996