|
@@ -3172,6 +3172,51 @@ bool EditorClient::trenne( bool abmelden )
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+// Beginnt eine individuelle Editor Nachricht
|
|
|
+// Gibt den Klient zurück, über den mit dem Server kommuniziert werden kann. Im Fehlerfall wird 0 zurückgegeben
|
|
|
+// Der Thread, der diese Methode aufgerufen hat, sollte nach dem Erfolgreichen Aufruf am Ende der Kommunikation mit dem Server endEditorMessage aufrufen
|
|
|
+Network::Klient *EditorClient::beginEditorMessage()
|
|
|
+{
|
|
|
+ cs.lock();
|
|
|
+ if( !k )
|
|
|
+ {
|
|
|
+ err = "Der Client ist nicht verbunden.";
|
|
|
+ cs.unlock();
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ k->sendeEncrypted( "\7", 1 );
|
|
|
+ char ret = 0;
|
|
|
+ k->getNachrichtEncrypted( &ret, 1 );
|
|
|
+ if( ret == 1 )
|
|
|
+ {
|
|
|
+ k->sendeEncrypted( "\xF", 1 );
|
|
|
+ k->getNachrichtEncrypted( &ret, 1 );
|
|
|
+ if( ret == 1 )
|
|
|
+ return k;
|
|
|
+ }
|
|
|
+ if( ret == 3 )
|
|
|
+ {
|
|
|
+ k->getNachrichtEncrypted( &ret, 1 );
|
|
|
+ char *msg = new char[ ret + 1 ];
|
|
|
+ msg[ ret ] = 0;
|
|
|
+ if( ret )
|
|
|
+ k->getNachrichtEncrypted( msg, ret );
|
|
|
+ err = "error while beginning Editor Message Server returned: ";
|
|
|
+ err += msg;
|
|
|
+ delete[] msg;
|
|
|
+ }
|
|
|
+ err = "Unbekannter Fehler";
|
|
|
+ cs.unlock();
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+// Beendet eine Editor Nachricht
|
|
|
+// sollte nur nach dem erfolgreichem Aufrufen von beginEditorMessage aufgerufen werden (vom selben Thread)
|
|
|
+void EditorClient::endEditorMessage()
|
|
|
+{
|
|
|
+ cs.unlock();
|
|
|
+}
|
|
|
+
|
|
|
// Gibt 1 zurück, falls der Client verbunden ist, 0 sonst
|
|
|
bool EditorClient::istVerbunden() const
|
|
|
{
|