Synchrone Übertragung
Um Dateien synchron zu übertragen, benutzen Sie die Funktion ft_transfer(). In der Parameterliste muss der Parameter synchron den Wert FT_SYNC
enthalten. Erst nach Beendigung der Dateiübertragung erhält das Programm wieder die Kontrolle. Ob die Dateiübertragung erfolgreich war, können Sie anhand des Rückgabewerts feststellen.
Asynchrone Übertragung
Um Dateien asynchron zu übertragen, sind mehrere Funktionsaufrufe notwendig. Sie ergeben sich daraus, dass bei asynchroner Dateiübertragung Aufträge erteilt, im Auftragsbuch gespeichert und eventuell erst zu einem späteren Zeitpunkt ausgeführt werden. Die Aufträge müssen verwaltet und die erfolgreiche Übertragung muss überwacht werden. Deshalb können Dateien nur innerhalb von "Sitzungen" asynchron übertragen werden.
Ein Programm zur asynchronen Dateiübertragung besteht aus zwei Teilen:
Im ersten Teil eröffnen Sie eine Sitzung. Außerdem erteilen Sie einen oder mehrere Aufträge zur Dateiübertragung. Ggf. löschen Sie Übertragungsaufträge.
Den Auftrag selbst führt openFT zum nächstmöglichen Zeitpunkt aus.Im zweiten Teil erfragen Sie zeitversetzt den Status des Auftrags und schließen den Auftrag bei erfolgreicher Übertragung ab. Ggf. ermitteln Sie nicht abgeschlossene Übertragungsaufträge und schließen diese ebenfalls ab. Sie beenden die Sitzung.
Schema des Programmaufbaus:
Folgende Funktionsaufrufe sind unbedingt notwendig, um Dateien asynchron zu übertragen:
ft_open()
Sie eröffnen eine Sitzung mit der Funktion ft_open(). Als Ergebnis von ft_open() erhalten Sie eine Sitzungsnummer (session identification), die die Sitzung eindeutig kennzeichnet. Diese Sitzungsnummer muss bei Funktionsaufrufen innerhalb derselben Sitzung als Parameter angegeben werden.
Beim Eröffnen einer Sitzung müssen Sie ein existierendes Dateiverzeichnis als Arbeitsverzeichnis zuordnen. In diesem Arbeitsverzeichnis werden Dateien mit Verwaltungsinformationen über die bestehenden Übertragungsaufträge gespeichert.
Sie können unterschiedlichen, nacheinander folgenden Sitzungen dasselbe Arbeitsverzeichnis zuordnen. Dies hat den Vorteil, dass Aufträge aus verschiedenen Sitzungen zusammen verwaltet werden.
In einem Programm können Sie mehrere Sitzungen parallel führen. Mit ft_open() können Sie allerdings mehrere Sitzungen nur dann gleichzeitig eröffnen, wenn jeder der parallelen Sitzungen ein anderes Arbeitsverzeichnis zugeordnet wird.ft_transfer()
Mit der Funktion ft_transfer() erteilen Sie einen Auftrag zur asynchronen Dateiübertragung. In der Parameterliste muss der Parameter synchron den WertFT_ASYNC
enthalten. In einer Sitzung können Sie nacheinander mehrere asynchrone Aufträge erteilen.
Wenn der Auftrag erfolgreich in das Auftragsbuch eingetragen wurde, erhalten Sie als Ergebnis von ft_transfer() eine Request-Id. Die Request-Id kennzeichnet den Auftrag eindeutig. Sie ist so lange gültig, auch über das Sitzungsende hinaus, bis Sie den Auftrag mit der Funktion ft_reqterm() abschließen.
Wenn der Auftrag im Auftragsbuch steht, müssen Sie sich nicht um die Auftragsausführung kümmern. openFT führt den asynchronen Auftrag zum frühestmöglichen Zeitpunkt aus. Wenn z.B. ein Partner im Moment nicht verfügbar ist, versucht openFT weiterhin Ihren Auftrag auszuführen. Der Auftrag bleibt so lange im Auftragsbuch, bis er erledigt ist oder bis ein evtl. angegebenes Löschdatum erreicht ist.ft_reqstat()
Ob die Dateiübertragung erfolgreich beendet wurde, stellen Sie mit der Funktion fft_reqstat() fest. Weil die asynchrone Übertragung nicht sofort erfolgt, sollten Sie den Status der Übertragung mit der Funktion ft_reqstat() zeitverzögert abfragen und diese Abfrage wiederholen. Wenn der Auftrag beendet ist, enthält der Parameter status den WertFT_STATT
, und wenn er abgebrochen wurde, den WertFT_STATA
.ft_reqterm()
Sie müssen den Auftrag mit der Funktion ft_reqterm() abschließen. Diese Funktion löscht die Request-Id des Auftrags und außerdem diejenige Datei, in der Informationen zum entsprechenden Dateiübertragungsauftrag gespeichert sind. Nicht mehr benötigte Ressourcen werden freigegeben.
Die Verwaltungsdatei hat den Namenmf
.Request-ID und befindet sich in dem Dateiverzeichnis, das als Parameter workdir mit dem Funktionsaufruf ft_open() bekanntgegeben wurde.
Die Request-Ids nicht abgeschlossener Aufträge bleiben erhalten, auch wenn die Sitzungen, in denen sie erteilt wurden, bereits beendet sind. Diese Aufträge können zu einem späteren Zeitpunkt über die zugehörige Request-Id abgeschlossen werden, wenn der aktuellen Sitzung dasselbe Arbeitsverzeichnis zugeordnet ist wie der Sitzung, in der der Auftrag erteilt wurde.ft_close()
Mit der Funktion ft_close() beenden Sie die Sitzung.
HOME-Verzeichnis
Wenn Datei- oder Verzeichnisnamen in fernen Unix- oder Windows-Systemen nicht absolut angegeben werden, dann ist das HOME-Verzeichnis des Benutzers im fernen System von Bedeutung. Relative Pfadnamen beziehen sich immer auf das HOME-Verzeichnis des jeweiligen Benutzers, sofern nicht über ein FTAC-Profil etwas anderes definiert wurde.
Für das HOME-Verzeichnis gilt:
In Unix-Systemen ist das HOME-Verzeichnis das Verzeichnis, in dem sich der Benutzer nach dem login befindet.
In Windows-Systemen ist das HOME-Verzeichnis eines Benutzers bei openFT-Aufträgen das Verzeichnis, das in der Benutzerverwaltung für diesen Benutzer eingetragen ist.
Falls für den Benutzer in der Benutzerverwaltung kein Verzeichnis eingetragen ist, dann wird als HOME-Verzeichnis der Profil-Pfad des Benutzers verwendet. Der Profil-Pfad ist \Users\Benutzer, wobei Benutzer nicht identisch mit dem Namen des Benutzers sein muss.
Falls auch der Profil-Pfad des Benutzers nicht ermittelt werden kann, wird das Home-Verzeichnis von openFT im Verzeichnis \Users angelegt und die Zugriffsrechte werden vollständig für SYSTEM, Administratoren und den jeweiligen Benutzer erlaubt. Der Name des durch openFT angelegten Home-Verzeichnisses wird dabei folgendermaßen bestimmt:Lokale Benutzerkennung: Benutzerkennung.Computername
Globale Benutzerkennung (Domäne\Benutzerkennung):
Benutzerkennung.Domäne
Asynchrone Aufträge verwalten
Zur Verwaltung asynchroner Aufträge gibt es noch weitere Funktionen:
ft_cancel()
Mit der Funktion ft_cancel() brechen Sie asynchrone Aufträge ab, die bereits bearbeitet werden oder die noch im Auftragsbuch auf ihre Bearbeitung warten.
Der Einsatz dieser Funktion ist z.B. sinnvoll, wenn das zu erstellende Programm eine Benutzeroberfläche hat und dem Benutzer Möglichkeiten gibt, einzugreifen. Man kann sich z.B. ein Programm vorstellen, das dem Benutzer wartende Übertragungsaufträge (ft_reqstat (status=FT_STATW)) anzeigt und das es ihm erlaubt, diese Aufträge abzubrechen.
Ein anderer Einsatzfall ist, wenn Übertragungsaufträge irrtümlich erteilt wurden und nun gelöscht werden sollen.
Mit der Funktion ft_cancel() können Sie nur Aufträge abbrechen, die im Auftragsbuch stehen und eine Request-Id haben. Wenn der Auftrag in einer anderen Sitzung erteilt wurde, muss der aktuellen Sitzung dasselbe Arbeitsverzeichnis zugeordnet sein, wie der Sitzung, in der der Auftrag erteilt wurde. Wenn die Funktion ft_transfer() den Rückgabewert 0 liefert, konnte der Auftrag nicht ins Auftragsbuch eingetragen werden. Diese erfolglosen Versuche, Aufträge einzutragen, beenden sich selbst mit einer Fehlermeldung.
Aufträge, die Sie mit ft_cancel() abbrechen, müssen Sie mit ft_reqterm() abschließen, damit die zugehörige Request-Id gelöscht wird.ft_reqlist()
Alle Übertragungsaufträge müssen abgeschlossen werden, damit zugehörige Request-Ids und Verwaltungsdateien gelöscht und nicht benötigte Ressourcen freigegeben werden können.
Mit der Funktion ft_reqlist() ermitteln Sie die nicht abgeschlossenen Aufträge aus allen Sitzungen, denen dasselbe Arbeitsverzeichnis zugeordnet wurde wie der aktuellen Sitzung. Beachten Sie, dass dabei nicht alle nicht-abgeschlossenen Aufträge ermittelt werden, sondern nur die aus Sitzungen mit demselben Arbeitsverzeichnis.