dsmSendObj

Der Funktionsaufruf dsmSendObj startet eine Anforderung zum Senden eines einzelnen Objekts an den Speicher. Aus Leistungsgründen können mehrere dsmSendObj -Aufrufe und zugehörige dsmSendData -Aufrufe innerhalb der Grenzen einer Transaktion erfolgen.

Der Aufruf dsmSendObj verarbeitet die Daten für das Objekt als Bytestrom, der in Speicherpuffer übergeben wird. Der Parameter dataBlkPtr im Aufruf dsmSendObj ermöglicht dem Anwendungsclient Folgendes:

  • Übergabe der Daten und der Attribute (die Attribute werden über objAttrPtr übergeben) des Objekts in einem einzigen Aufruf.
  • Geben Sie einen Teil der Objektdaten über den Aufruf dsmSendObj und den Rest der Daten über einen oder mehrere Aufrufe dsmSendData an.
Alternativ kann der Anwendungsclient nur die Attribute über den Aufruf dsmSendObj und die Objektdaten über einen oder mehrere Aufrufe an dsmSendDataangeben. Setzen Sie für diese Methode dataBlkPtr im Aufruf dsmSendObj auf NULL.
Tipp: Bei bestimmten Objekttypen sind den Daten möglicherweise keine Bytestromdaten zugeordnet, z. B. ein Verzeichniseintrag ohne erweiterte Attribute.

Bevor dsmSendObj aufgerufen wird, muss ein vorheriger dsmBindMC -Aufruf abgesetzt werden, um eine Verwaltungsklasse ordnungsgemäß an das Objekt zu binden, das gesichert oder archiviert werden soll. Die API behält diese Bindung bei, sodass sie dem Objekt, wenn es an den Server gesendet wird, die korrekte Verwaltungsklasse zuordnen kann. Wenn Sie der Verwaltungsklasse, die in einem Aufruf dsmSendObj gebunden ist, den Standardwert für den Objekttyp 'Verzeichnis' (DSM_OBJ_DIRECTORY) erteilen, ist der Standardwert möglicherweise nicht die Standardverwaltungsklasse. Stattdessen wird die Verwaltungsklasse mit dem längsten Aufbewahrungszeitraum verwendet. Sind mehrere Verwaltungsklassen mit diesem Aufbewahrungszeitraum vorhanden, wird die erste gefundene Verwaltungsklasse verwendet.

Befolgen Sie alle Objektdaten, die mit einem dsmEndSendObj -Aufruf an den Speicher gesendet werden. Wenn Sie keine Objektdaten zum Senden an den Server haben oder alle Daten im Aufruf dsmSendObj enthalten waren, Starten Sie einen dsmEndSendObj -Aufruf, bevor Sie einen weiteren dsmSendObj -Aufruf starten. Wenn mehrere Datensendevorgänge über den Aufruf dsmSendData erforderlich waren, folgt dsmEndSendObj dem letzten Sendevorgang, um die Statusänderung anzuzeigen.

Tipp: Wenn IBM® Storage Protect Code 157 (DSM_RC_WILL_ABORT) zurückgibt, starten Sie einen Aufruf an dsmEndTxn mit dem Votum DSM_VOTE_COMMIT. Die Anwendung empfängt den Rückkehrcode 2302 (DSM_RC_CHECK_REASON_CODE) und übergibt den Ursachencode zurück an den Anwendungsbenutzer. Damit wird dem Benutzer mitgeteilt, warum der Server die Transaktion beendet.

Lautet der Ursachencode 11 (DSM_RS_ABORT_NO_REPOSIT_SPACE), ist es möglich, dass die Größenschätzung (sizeEstimate) für das tatsächliche Datenvolumen zu klein ist. Die Anwendung muss eine genauere Größenschätzung (sizeEstimate) durchführen und die Daten erneut senden.

Syntax

dsInt16_t dsmSendObj  (dsUint32_t       dsmHandle,
   dsmSendType  sendType,
   void        *sendBuff,
   dsmObjName  *objNameP,
   ObjAttr     *objAttrPtr,
   DataBlk     *dataBlkPtr);

Parameter

dsUint32_t dsmHandle (I)
Die Kennung, die diesen Aufruf einem vorherigen Aufruf dsmInitEx zuordnet.
dsmSendType sendType (I)
Dieser Parameter gibt den Sendetyp an, der ausgeführt wird. Gültige Werte umfassen:
  Name Beschreibung
  stBackup Ein Sicherungsobjekt, das an den Server gesendet wird.
  stArchive Ein Archivierungsobjekt, das an den Server gesendet wird.
  stBackupMountWait Ein Sicherungsobjekt, für das der Server warten soll, bis die erforderliche Einheit bereitgestellt wird , z. B. ein Band geladen wird.
  stArchiveMountWait Ein Archivierungsobjekt, für das der Server warten soll, bis die erforderliche Einheit bereitgestellt wird, z. B. ein Band geladen wird.
Anmerkung: Verwenden Sie die Typen MountWait , wenn die Möglichkeit besteht, dass der Anwendungsbenutzer Daten an ein Band sendet.
void *sendBuff (I)
Dieser Parameter ist ein Verweis auf eine Struktur, die andere Informationen enthält, die für den Sendetyp (sendType) in dem Aufruf spezifisch sind. Derzeit ist nur für einen Sendetyp (sendType) mit dem Wert stArchive eine Struktur zugeordnet. Diese Struktur hat den Namen sndArchiveData und enthält die Archivierungsbeschreibung.
dsmObjName *objNameP (I)
Dieser Parameter ist ein Verweis auf die Struktur, die den Dateibereichsnamen, den übergeordneten Objektnamen, den untergeordneten Objektnamen und den Objekttyp enthält. Weitere Informationen finden Sie unter Objektnamen und IDs .
ObjAttr *objAttrPtr (I)
Dieser Parameter übergibt Objektattribute, die für die Anwendung von Interesse sind. Informationen zur Typdefinition finden Sie unter Quellendateien für API-Typdefinitionen .

Die Attribute sind:

  • owner bezieht sich auf den Eigner des Objekts. Beim Abrufen des Objekts aus dem IBM Storage Protect -Speicher ist es wichtig zu ermitteln, ob der Eigner als bestimmter Name oder als leere Zeichenfolge deklariert ist. Weitere Informationen finden Sie unter Als Sitzungseigner auf Objekte zugreifen .
  • sizeEstimate ist die bestmögliche Schätzung der Gesamtgröße des Datenobjekts, das an den Server gesendet werden soll. Diese Größe sollte so genau wie möglich geschätzt werden, da der Server dieses Attribut für die effiziente Bereichszuordnung und Objektpositionierung in seinen Speicherressourcen verwendet.
    Ist die von Ihnen angegebene Größenschätzung erheblich geringer als die tatsächliche Anzahl Byte, die gesendet wird, hat der Server möglicherweise Schwierigkeiten, ausreichend Speicherbereich zuzuordnen, und beendet die Transaktion mit dem Ursachencode 11 (DSM_RS_ABORT_NO_REPOSIT_SPACE).
    Hinweis Die Größenschätzung bezieht sich auf die Gesamtgröße des Datenobjekts in Byte.

    Objekte mit einer geringeren Größe als DSM_MIN_COMPRESS_SIZE werden nicht komprimiert.

    Wenn Ihr Objekt keine Bitdaten (sondern nur Attributinformationen dieses Aufrufs) enthält, sollte der Wert für sizeEstimate null sein.
    Hinweis: Ab Version 5.1.0wird das Kopierziel innerhalb einer Transaktion nicht auf Konsistenz für Objekte mit einer Länge von null geprüft.
  • objCompressed ist ein boolescher Wert, der angibt, ob die Objektdaten bereits komprimiert wurden oder nicht.

    Wenn das Objekt komprimiert ist (object compressed = bTrue ), versucht IBM Storage Protect nicht, es erneut zu komprimieren. Wenn es nicht komprimiert ist, entscheidet IBM Storage Protect, ob das Objekt komprimiert wird, basierend auf den Werten der vom Administrator festgelegten Komprimierungsoption, die in den API-Konfigurationsquellen eingestellt ist.

    Soll Ihre Anwendung eine Zurückschreibung oder einen Abruf von Teilobjekten ausführen, können die Daten während des Sendevorgangs nicht komprimiert werden. Um dies zu erzwingen, setzen Sie ObjAttr.objCompressed auf bTrue.

  • Mit objInfo werden Informationen zu dem spezifischen Objekt gespeichert.
    Einschränkung: Informationen werden hier nicht automatisch gespeichert. Wenn dieses Attribut verwendet wird, müssen Sie das Attribut objInfoLength definieren, um die Länge für objInfo anzugeben.
  • mcNameP enthält den Namen einer Verwaltungsklasse, die die aus dsmBindMCabgerufene Verwaltungsklasse überschreibt.
  • disableDeduplication ist ein boolescher Wert. Wird er auf wahr gesetzt, wird das Objekt nicht vom Client dedupliziert.

Wenn die clientseitige Deduplizierung aktiviert ist und es sich bei dem gesendeten Objekt um ein Verzeichnis handelt, müssen das Objektattribut und der Objektnamentyp wie folgt konfiguriert werden:

objAttrArea.disableDeduplication = bTrue;
objName.objType = DSM_OBJ_DIRECTORY;
DataBlk *dataBlkPtr (I/O)
Dieser Parameter verweist auf eine Struktur, die sowohl einen Zeiger auf den Puffer für die Daten enthält, die gesichert oder archiviert werden sollen, als auch einen Zeiger auf die Größe des Puffers. Dieser Parameter gilt nur für dsmSendObj . Wenn Sie mit dem Senden von Daten bei einem nachfolgenden dsmSendData -Aufruf beginnen wollen und nicht beim Aufruf dsmSendObj , setzen Sie den Pufferzeiger in der Struktur DataBlk auf NULL. Bei der Rückkehr enthält diese Struktur die Anzahl tatsächlich übertragener Byte. Informationen zur Typdefinition finden Sie unter Quellendateien für API-Typdefinitionen .

Rückkehrcodes

Die Rückkehrcodenummern sind in runden Klammern ( ) angegeben.

Tabelle 1. Rückgabecodes für dsmSendObj
Rückkehrcode Erläuterung
DSM_RC_NO_COMPRESS_MEMORY (154) Es ist nicht genügend Speicher zum Ausführen der Datenkomprimierung oder -erweiterung verfügbar.
DSM_RC_COMPRESS_GREW (155) Während der Komprimierung nahm die Größe der komprimierten Daten im Vergleich zu den ursprünglichen Daten zu.
DSM_RC_WILL_ABORT (157) Ein unbekannter und unerwarteter Fehler ist aufgetreten, der das Anhalten der Transaktion zur Folge hatte.
DSM_RC_TL_NOBCG (184) Die Verwaltungsklasse für diese Datei hat keine gültige Sicherungskopiegruppe.
DSM_RC_TL_NOACG (186) Die Verwaltungsklasse für diese Datei hat keine gültige Kopiengruppe für den Sendetyp.
DSM_RC_NULL_OBJNAME (2000) Objektname ist null.
DSM_RC_NULL_OBJATTRPTR (2004) Objektattributzeiger ist null.
DSM_RC_INVALID_OBJTYPE (2010) Ungültiger Objekttyp.
DSM_RC_INVALID_OBJOWNER (2019) Ungültiger Objekteigner.
DSM_RC_INVALID_SENDTYPE (2022) Ungültiger Sendetyp.
DSM_RC_WILDCHAR_NOTALLOWED (2050) Platzhalterzeichen nicht zulässig.
DSM_RC_FS_NOT_REGISTERED (2061) Dateibereich nicht registriert.
DSM_RC_WRONG_VERSION_PARM (2065) Die API-Version des Anwendungsclients unterscheidet sich von der IBM Storage Protect -Bibliotheksversion.
DSM_RC_NEEDTO_ENDTXN (2070) Die Transaktion muss beendet werden.
DSM_RC_OBJ_EXCLUDED (2080) Das Objekt wurde von der Einschluss-/Ausschlussliste ausgeschlossen.
DSM_RC_OBJ_NOBCG (2081) Das Objekt hat keine Sicherungskopiengruppe und wird nicht an den Server gesendet.
DSM_RC_OBJ_NOACG (2082) Das Objekt hat keine Archivierungskopiengruppe und wird nicht an den Server gesendet.
DSM_RC_DESC_TOOLONG (2100) Die Beschreibung ist zu lang.
DSM_RC_OBJINFO_TOOLONG (2101) Die Objektinformationen sind zu lang.
DSM_RC_HL_TOOLONG (2102) Das übergeordnete Qualifikationsmerkmal ist zu lang.
DSM_RC_FILESPACE_TOOLONG (2104) Der Dateibereichsname ist zu lang.
DSM_RC_LL_TOOLONG (2105) Das untergeordnete Qualifikationsmerkmal ist zu lang.
DSM_RC_NEEDTO_CALL_BINDMC (2301) dsmBindMC muss zuerst aufgerufen werden.