Seite 13 von 15

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.2][Include

Verfasst: 05.07.2011 23:24
von cxAlex
TomS hat geschrieben:Hi,
Gibt's auch irgendwo ne Hilfe, wie man das benutzt?
Was sind das für Konstanten, wie man ENM_Init() übergeben kann?
/sample/server.pb gibt mir einen Fehler, dass der x64 Compiler nicht gefunden werden kann. Logisch, hab ja auch 32bit PB auf meinem 32bit OS.
Ich würde das gerne mal ausprobieren, aber ich steig da gar nicht durch :lamer:
Da ist in den Compiler-Settings in dem File wohl explizit der x64 Compiler drin, bitte einfach umstellen. Muss das ganze immer wieder x86/x64 Ascii/Unicode testen und wie sich unterschiedlich kompilierte Server/Clients verhalten, da schalte ich das dauernd um. Die Konstanten die du ENM_Init() übergeben kannst bestimmen wie das ENM-System Initialisiert wird. Client-Only/Server-Only oder er läd nur die Tools (Cache, Log-System,...). Per Default wird einfach alles geladen wenn du keine Parameter übergibst, das kannst du zum testen so lassen. Und eine Beschreibung zu den jeweiligen Befehlen gibt's in der ENM_CommandDescription.pbi

Gruß, Alex

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.2][Include

Verfasst: 06.07.2011 00:57
von TomS
Ah, Danke. :allright:
Einmal auf Compiler-Optionen und schon klappt's.
Dann war's ja OK, dass ich bei Init einfach nichts übergeben habe.
Ja, das mit der Beschreibung hab ich gelesen, aber da stand halt nichts über die Init drin^^

Hast wohl schon die 4.6b benutzt. Bei FindString fehlt der (seit der beta optionale) Parameter Startposition^^

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.2][Include

Verfasst: 06.07.2011 01:08
von cxAlex
TomS hat geschrieben:Ah, Danke. :allright:
Einmal auf Compiler-Optionen und schon klappt's.
Dann war's ja OK, dass ich bei Init einfach nichts übergeben habe.
Ja, das mit der Beschreibung hab ich gelesen, aber da stand halt nichts über die Init drin^^

Hast wohl schon die 4.6b benutzt. Bei FindString fehlt der (seit der beta optionale) Parameter Startposition^^
Jup, die letzten Tests habe ich mit der Beta gemacht, steht auch im Changelog ;)

Gruß, Alex

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.2][Include

Verfasst: 06.07.2011 08:31
von TomS
cxAlex hat geschrieben:Jup, die letzten Tests habe ich mit der Beta gemacht, steht auch im Changelog
Wo auch immer man den findet. 8)

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.2][Include

Verfasst: 06.07.2011 09:19
von cxAlex
Direkt am Anfang von ENM.pbi unter Changelog? ^^

Gruß, Alex

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.2][Include

Verfasst: 07.07.2011 11:35
von thminz
Coool danke danke genau das suche ich gerade danke nochmal für deine geleistete Arbeit :allright: :allright: :)

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.2][Include

Verfasst: 11.07.2011 15:58
von cxAlex
Update V# 1.3.3

BugFix im Ping-Modul, der Unicode-Modus machte Probleme. Kleine Performance - Verbesserungen.
Simple-RPC Demo beigefügt.

Download im 1. Post

Gruß, Alex

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.3][Include

Verfasst: 12.07.2011 22:51
von TomS
Hi.
Ich hab jetzt mal ein bißchen damit rumgespielt.
Macht einen sehr soliden Eindruck und ist eine wahre Erleichterung gegenüber den normalen Netzwerkbefehlen.

Allerdings habe ich jetzt einen IMA: Lesefehler an Adresse 252, wenn ich aus dem Client_RecData-Callback heraus den Text von einem Webgadet ändern will. Dabei spielt es keine Rolle, ob ich die empfangenen Text setzen will, oder eine beliebige Stringkonstante.
Debugger - Speicheranzeige sagt mir dass der Bereich (252) gar nicht zum lesen freigegeben ist.
Ich nehme mal an, dass liegt an den Threads, da ich vorher noch nie einen IMA bei normalen Gadgetbefehlen hatte.
Ich habe auch schon versucht den Befehl zwischen Lock/UnlockMutex zu setzen, ohne Erfolg. Naja, war mehr ein Schuss in's blaue, da ich von Threads keinen blassen Dunst habe.

Hier ist der Code: http://purebasicusermap.bplaced.de/chat.pb.txt
Der Fehler ist in Zeile 129 bei SetGadgetItemText, in der Prozedur "Add"


EDIT:
freak hat geschrieben:WebGadget+Threads=trouble. Just don't do it.
:(

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.3][Include

Verfasst: 12.07.2011 23:11
von cxAlex
Was ich mal sehe ist das du die Liste ohne Schutzmutex durchgehst und Clients suchst, entfernst, usw. Das geht daneben da die PB - Listen/Maps NICHT! Threadsicher sind. Du solltest sämtliche Zugriffe mit einer Mutex schützen. Ich habs mit nicht genau angesehen, aber brauchst du diese Liste wirklich, kannst du das nicht mit ENM\SetConnectionData() lösen? Da währe das Ganze schon Thread-sicher implementiert. Und ja, auch die Gadget-Bibliothek ist nicht wirklich Thread-sicher, bitte auch mit diese Get/Set Routinen mit Mutexen ummanteln (Auch in Event-Loops, usw., beim resizen, ...) um gleichzeitige Zugriffe zu verhindern! Speziell beim Web-Gadget hab ich da auch ein paar negative Erfahrungen machen müssen.

Der PB-Debugger ist leider nicht mehr wirklich hilfreich bei Threads, es passiert ein Fehler, es kommt ein Kontext-Switch und der Debugger zeigt irgendwas an. Bei Thread-Fehlern bekommt man weit öfter eine zufällige Zeile angezeigt als die Richtige :P

Gruß, Alex

//Edit: Edit erst jetzt gesehen, das wirds wohl sein :P

Re: EasyNetworkManager [Neu: Log - System][V# 1.3.3][Include

Verfasst: 12.07.2011 23:21
von TomS
Hi, danke für die Tipps.
Ich brauch die Liste nur um den Server Daten an alle Clients senden zu lassen. Gibt's dazu vielleicht auch einen Befehl, den ich übersehen habe? Sowas wie GetNext() bei den Paketen?
Ansonsten werd ich halt alles "Mutexen", sobald ich nen adäquaten Ersatz für das WebGadget gefunden habe