Compactação

Opções de configuração em um determinado nó e a opção dsmSendObj objCompressed determinam se o IBM® Storage Protect compacta o objeto durante um envio. Além disso, os objetos com sizeEstimate inferior a DSM_MIN_COMPRESS_SIZE nunca serão compactados.

Se o objeto já estiver compactado (objCompressed=bTrue), ele não é compactado novamente. Se não for compactado, o IBM Storage Protect decidirá se o objeto deve ser compactado, com base nos valores da opção de compactação definida pelo administrador e definida nas fontes de configuração da API.

O administrador pode alterar os limites de compactação no servidor, utilizando o comando de nó de registro (compression=yes, no ou client-determined). Se for client-determined, o comportamento de compactação será determinado pelo valor da opção de compactação nas origens de configuração.

Alguns tipos de dados, como os dados que já estão compactados, podem na verdade ser maiores quando processados com o algoritmo de compactação. Quando isso ocorre, o código de retorno DSM_RC_COMPRESS_GREW é gerado. Se você perceber que isso pode ocorrer, mas deseja que a operação de envio continue mesmo assim, informe aos usuários finais para especificar a seguinte opção no arquivo de opções:
  COMPRESSAlways Yes

Se, durante uma função dsmSendData, com compactação ativada, você obtiver um código de retorno DSM_RC_COMPRESS_GREW, você pode desejar iniciar do princípio e enviar o objeto novamente sem compactação. Para reforçar isto, configure dsmSendObj ObjAttr.objCompressed para bTrue.

As informações sobre o comportamento de compactação real durante um dsmSendObj são retornadas pela chamada de dsmEndSendObjEx. objCompressed especifica se a compactação foi realizada. totalBytesSent é o número de bytes enviados pelo aplicativo. totalCompressedSize é o número de bytes após a compactação. A chamada de dsmEndSendObjEx também tem um campo totalLFBytesSent que contém o total de bytes enviados sem a LAN.

Atenção: Se o seu aplicativo planeja usar a restauração ou recuperação de objetos parciais, você não pode compactar os dados enquanto envia. Para reforçar isto, configure dsmSendObj ObjAttr.objCompressed para bTrue.