Globales Object
-
Hallo
ich habe folgenden Aufbau:
Klassen Mutex Klasse
A M D (main)
B
CAn die Objekte von A,B und C komme ich nicht. M und C habe ich gebaut.
M soll zur Kommunikation zwischen (A,B,C) nach D dienen.
D. h. A oder B oder C rufen Set-fkt in M auf, D holt mit Get-fkt den Inhalt raus.
Dazu benötige ich ein Globales Objekt von M. Das Könnte ich beim Startup (in D befindet sich meine Main) kreieren. Wie sollen aber A,B und C an dieses Objekt kommen?
Hat jemand ne Idee?
-
Also:
Die Klassen sind: A, B, C
Mutex MKlasse D (main)
-
Tip: Singleton

(oder du übergibst A,B,C das Objekt im Konstruktor, wenn die damit umgehen können)
-
CStoll schrieb:
Tip: Singleton

(oder du übergibst A,B,C das Objekt im Konstruktor, wenn die damit umgehen können)
Sigelton - hmmm.
Bevor ich mir jetzt das Singeltor tut. durchlese folgendes:
in A,B und C werden Funktionen meines CORBA-Servers aufgerufen.
Was ich mitkriege sind also nur das Einspringen in den Funktionsrumpf, wenn eine CORBA-Message vorliegt.
Die Constructoren von A B und C werden von CORBA irgendwo aufgerufen (Upcalls) ich habe weder Einfluss auf die Erzeugung, noch die Objekte selber.
Was ich also brauch iss ein globales Objekt M, auf das ich in den Members von ABC zugreifen kann.
Funzt das mit Singletons?
-
Kannst du die Funktion von A,B und C, die auf M zugreifen wollen, selber schreiben? Wenn ja, dann dürfte das mit dem Singleton funktionieren.
-
CStoll schrieb:
Kannst du die Funktion von A,B und C, die auf M zugreifen wollen, selber schreiben? Wenn ja, dann dürfte das mit dem Singleton funktionieren.
...nee - die werden von einem IDL-Compiler erzeugt.
Ich könnte sie theoretisch nichtmal überschreiben.
-
Theresa schrieb:
...nee - die werden von einem IDL-Compiler erzeugt.
Ich könnte sie theoretisch nichtmal überschreiben.Ich glaube, dann hast du ein Problem - egal wie du den Mutex zwischen deinen Klassen austauschst, du müsstest alle Beteiligten darauf anpassen.
(ich hatte zwar mal einen Kurs über CORBA, aber der ist schon eine Weile her - eventuell könntest du ja CORBA-interne Kommunikationsmechanismen ausnutzen)
-
ich hab ne idee - ich machs einfach mit extern.
also: mutex im main global anlegen,
pointer auf mutex in a b c extern - fertig!