"EventPipe"

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: "EventPipe"

Beitrag von Xin » Do Jan 17, 2013 5:33 pm

Yoghurt hat geschrieben:
Xin hat geschrieben:Zeiger funktionieren nicht über das Netzwerk. Sobald Du über das Netzwerk was verschickst, sind die zwar Zeiger gültig übermittelt, aber sie gelten halt für einen anderen Computer.
Die Virtual-Table ist ein Zeiger - und der zeigt beim Empfänger zwar genau da hin, wo er auch beim Sender hinzeigt, nur ist beim Empfänger da nicht zwangsläufig der gleiche Inhalt im Speicher.
Okay jetzt hab ichs kapiert. Der Zeiger für die VTable findet einfach seinen Inhalt nicht mehr.
Wie würde man dann sowas in C++ umsetzen? Also wenn ich ein Objekt von einer erbenden Klasse übers Netzwerk verschicken will?
In Java oder C# könnte man ja theoretisch das Objekt serialisieren, verschicken, deserialisieren und dann wieder verwenden.
Was meinst Du, weswegen man in Java oder C# serialisiert... ^^ Die kochen genauso mit Wasser.

Wie würde man das in C++ machen? Naja... Serialisieren, verschicken, deserialisieren...

Der Vorteil der event_id ist ja eben, dass sie nicht serialisiert werden muss. Es ja kein Pointer. Solange in der Datenstruktur keine Pointer enthalten sind, ist die Datenstruktur serialisiert und muss nicht verändert werden. Man kann sie also direkt am Stück verschicken und auf der anderen Seite (mit geringem Risiko) einfach behaupten, dass das eine Instanz der Klasse ist.
Xin hat geschrieben:Danke für die vielen Erklärungen und deine Geduld.^^
Jaaaaa, ich begann auch langsam an meiner Fähigkeit zu erklären zu zweifeln ;-D
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Yoghurt
Beiträge: 79
Registriert: Fr Nov 16, 2012 8:01 am
Wohnort: Niederbayern

Re: "EventPipe"

Beitrag von Yoghurt » Do Jan 17, 2013 7:25 pm

Xin hat geschrieben:Was meinst Du, weswegen man in Java oder C# serialisiert... ^^ Die kochen genauso mit Wasser.

Wie würde man das in C++ machen? Naja... Serialisieren, verschicken, deserialisieren...

Der Vorteil der event_id ist ja eben, dass sie nicht serialisiert werden muss. Es ja kein Pointer. Solange in der Datenstruktur keine Pointer enthalten sind, ist die Datenstruktur serialisiert und muss nicht verändert werden. Man kann sie also direkt am Stück verschicken und auf der anderen Seite (mit geringem Risiko) einfach behaupten, dass das eine Instanz der Klasse ist.
Gibt es in C++ Bordmittel zum serialisieren?
Xin hat geschrieben:Jaaaaa, ich begann auch langsam an meiner Fähigkeit zu erklären zu zweifeln ;-D
Hehe ^^
Fast schon ein bisschen peinlich, vor allem weil es eigentlich ganz logisch ist. :D
Schon komisch, dass ich bei Java und C# gleich auf serialisieren gekommen bin und bei C++ solange nicht gecheckt hab warum man das nicht "einfach so" verschicken kann. :P
"Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why."

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: "EventPipe"

Beitrag von Xin » Do Jan 17, 2013 7:48 pm

Yoghurt hat geschrieben:Gibt es in C++ Bordmittel zum serialisieren?
Nein, als C++ erschien, waren Netzwerke und Datenbanken nicht unbedingt so präsent wie heute.

Ich habe ein Datenbanktemplate geschrieben, die Daten aus Objekten ausliest und in ein SQL-Kommando, XML oder JSON packt. Das ist damit serialisiert und kann auf der anderen Seite wieder zu neuen Objekten konstruiert werden.

Es ist nicht perfekt, es ist nicht 100% C++ Feeling, weil man in jede betroffene Klasse ein paar zusätzliche Erklärungen packen muss, aber grundsätzlich erleichtert es die Arbeit schon deutlich. Ich speichere damit beispielsweise die Programme einer graphischen Programmiersprache in dem ich die Objekte die das Programm ausmachen einfach als XML serialisiere und auf die Platte schreibe und beim Laden halt die Objekte wieder über eine Factory erzeuge und von dem Template befüllen lasse.
Yoghurt hat geschrieben:
Xin hat geschrieben:Jaaaaa, ich begann auch langsam an meiner Fähigkeit zu erklären zu zweifeln ;-D
Hehe ^^
Fast schon ein bisschen peinlich, vor allem weil es eigentlich ganz logisch ist. :D
Schon komisch, dass ich bei Java und C# gleich auf serialisieren gekommen bin und bei C++ solange nicht gecheckt hab warum man das nicht "einfach so" verschicken kann. :P
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten