🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fras.text.programmieren
5 messages
5 total messages Started by Steffen Zimmert Thu, 21 Sep 1995 13:39
Messageports und ReplyMsg()
#32
Author: Steffen Zimmert
Date: Thu, 21 Sep 1995 13:39
24 lines
1665 bytes
Hallo!

Ich habe zwei öffentliche MessagePorts,  die  untereinander  eine
von   mir   definierte  Message-Struktur(RKRM-konform  natürlich)
austauschen. Da es für die Ports wichtig ist, zu wissen, das ihre
abgeschickte  Nachricht  auch  wieder freigegeben wurde, wird sie
mittels `ReplyMsg()` vom Empfängerport returniert.

Hier ist  das  Problem.  Jeder  MessagePort  muß  die  erhaltenen
Messages erst prüfen, ob es seine eigene verschickte sein könnte,
da in diesem Falle ein weiteres `ReplyMsg()` fatale Folgen  haben
kann(<- Eigene Erfahrung! :-(). Wie mache ich das systemkonform?

Bisher habe ich mir folgendes überlegt. Ich merke mir die Adresse
der verschickten Message und überprüfe die erhaltenen darauf. Ist
die Adresse gleich -> Kein ReplyMsg(), ist sie unterschiedlich ->
ReplyMsg().   Damit  der  Port  weiß,  daß  noch  eine  Nachricht
unterwegs ist, setze  ich  eine  Variable,  die  den  Status  der
verschickten Message anzeigt(UNTERWEGS,DAHEIM ;) ).

Kann man das so machen, oder bin einmal wieder auf  dem  Holzweg,
mache es zu umständlich,...
 
        MfG,    Steffen
Re: Messageports und ReplyMsg()
#38
Author: Klemens Meyer
Date: Fri, 22 Sep 1995 15:50
45 lines
2726 bytes
Am Do 21.09.1995 um 15:39:55 Uhr meinte S.ZIMMERT@ame.osn.de (Steffen Zimmert) zum Thema "Messageports und ReplyMsg()":


SZ> Ich habe zwei öffentliche MessagePorts,  die  untereinander  eine
SZ> von   mir	definierte  Message-Struktur(RKRM-konform  natürlich)
SZ> austauschen. Da es für die Ports wichtig ist, zu wissen, das ihre
SZ> abgeschickte  Nachricht  auch  wieder freigegeben wurde, wird sie
SZ> mittels `ReplyMsg()` vom Empfängerport returniert.

Wenn ich das richtig verstanden habe, so hast Du zwei Tasks/Prozesse
laufen, und die haben jeder einen öffentlichen Port zur Kommunikation?

SZ> Hier ist  das  Problem.  Jeder  MessagePort  muß  die  erhaltenen
SZ> Messages erst prüfen, ob es seine eigene verschickte sein könnte,
SZ> da in diesem Falle ein weiteres `ReplyMsg()` fatale Folgen  haben
SZ> kann(<- Eigene Erfahrung! :-(). Wie mache ich das systemkonform?

Aha, Du benutzt diese Ports auch gleichzeitig als Reply-Port.

SZ> Bisher habe ich mir folgendes überlegt. Ich merke mir die Adresse
SZ> der verschickten Message und überprüfe die erhaltenen darauf. Ist
SZ> die Adresse gleich -> Kein ReplyMsg(), ist sie unterschiedlich ->
SZ> ReplyMsg().   Damit  der  Port  weiß,  daß  noch  eine  Nachricht
SZ> unterwegs ist, setze  ich  eine  Variable,	die  den  Status  der
SZ> verschickten Message anzeigt(UNTERWEGS,DAHEIM ;) ).

Ja, das kannst Du so machen :-)

SZ> Kann man das so machen, oder bin einmal wieder auf	dem  Holzweg,
SZ> mache es zu umständlich,...

Nun, umständlich ist das wirklich... :-))

Besser geht das, wenn Du pro Task einen Öffentlichen Port und je einen
privaten Port als ReplyPort hast. Also Du trägst in die Message-Struktur
jeweils den privaten Port als ReplyPort ein, und weißt dann: Jede Message,
die am privaten Port ankommt ist "Replied" worden. Dann hast Du keinerlei
Aufwand mehr mit dem Merken der Strukturadressen und dem Vergleichen.



----------------------------------------------------------------------------
	 Viel Spass noch
			Klemens
----------------------------------------------------------------------------
Re: Messageports und ReplyMsg()
#34
Author: Karsten Klenz
Date: Fri, 22 Sep 1995 16:06
18 lines
1329 bytes
Am Do 21.09.1995 tipperte S.ZIMMERT@AME.osn.de (Steffen Zimmert)
unter dem Betreff "Messageports und ReplyMsg()":

> Kann man das so machen, oder bin einmal wieder auf  dem  Holzweg,
> mache es zu umständlich,...

Ja, nein, ja! ;-)

Setze einfach, bevor Du die Message mit ReplyMsg()
zurückschickst, DeineMessage->Struct_Message.mn_ReplyPort = NULL.
Dadurch kannst Du einfach erkennen, ob eine erhaltene Message
beantwortet werden muß oder selber eine Antwort ist.

-- 
                                                                  __
bess      |/     Karsten Klenz - ELESSAR@BINGO.comlink.de    __  ///
 demnähx, |\/    BINGO - Das Mediencafe inhaltlich füllen    \\\///
  this is  |\   PGP 2.6ui - public key available on request   \XX/
Re: Messageports und ReplyMsg()
#33
Author: Albert Weinert
Date: Fri, 22 Sep 1995 18:00
33 lines
2109 bytes
In einem Artikel schrieb Steffen Zimmert:

> abgeschickte  Nachricht  auch  wieder freigegeben wurde, wird sie
> mittels `ReplyMsg()` vom Empfängerport returniert.
> 
> Hier ist  das  Problem.  Jeder  MessagePort  muß  die  erhaltenen
> Messages erst prüfen, ob es seine eigene verschickte sein könnte,
> da in diesem Falle ein weiteres `ReplyMsg()` fatale Folgen  haben
> kann(<- Eigene Erfahrung! :-(). Wie mache ich das systemkonform?

Abfragen ob es eine zurückgeschickte Nachricht ist.

> Bisher habe ich mir folgendes überlegt. Ich merke mir die Adresse
> [...umständliches gelöscht...]
> Kann man das so machen, oder bin einmal wieder auf  dem  Holzweg,
> mache es zu umständlich,...

Ja, die Message ist ja eine erweiterte Node, und dort gibt es den
Eintrag ln_Type, dieser enthält den Type der Node bzw. Nachricht. Wenn
eine Nachricht nun mit ReplyMsg() zurückgeschickt wird, dann wird in
ln_Type NT_ReplyMsg eingetragen. Nun brauchst Du nur noch abzufragen
ob NT_ReplyMsg in ln_Type steht und schon weisst Du ob es eine
zurückgeschickte Nachricht ist.

Allerdings solltest Du intern einen Zähler mitlaufen lassen in der die
vermerkst wieviel verschickte Nachrichten noch ausstehen, sonst gibt
es beim beenden evtl. Speicherleichen.

+++Albert
_____________________________________________________________________
Albert Weinert                                                   Köln

Ich wünsche mir das Lied "Frogger" von der Gruppe "ATARI"
Re: Messageports und ReplyMsg()
#39
Author: Andreas Winkelmann
Date: Sat, 23 Sep 1995 09:25
24 lines
1573 bytes
Hallo Steffen.

> Hier ist  das  Problem.  Jeder  MessagePort  muß  die  erhaltenen
> Messages erst prüfen, ob es seine eigene verschickte sein könnte,
> da in diesem Falle ein weiteres `ReplyMsg()` fatale Folgen  haben
> kann(<- Eigene Erfahrung! :-(). Wie mache ich das systemkonform?

> Bisher habe ich mir folgendes überlegt. Ich merke mir die Adresse
> der verschickten Message und überprüfe die erhaltenen darauf. Ist
> die Adresse gleich -> Kein ReplyMsg(), ist sie unterschiedlich ->
> ReplyMsg().   Damit  der  Port  weiß,  daß  noch  eine  Nachricht
> unterwegs ist, setze  ich  eine  Variable,  die  den  Status  der
> verschickten Message anzeigt(UNTERWEGS,DAHEIM ;) ).

> Kann man das so machen, oder bin einmal wieder auf  dem  Holzweg,
> mache es zu umständlich,...

Im ln_Type-Feld der Nodestruktur steht bei retournierten Msgs ein
`NT_REPLYMSG'.

-----
Andreas Winkelmann

E-Mail : andi@art-line.art-line.de -- MicroDot V1.11beta12
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads