
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5438 8e941d3f-bd1b-0410-a28a-d453659cc2b4
183 lines
7.6 KiB
ObjectPascal
183 lines
7.6 KiB
ObjectPascal
{*********************************************************}
|
|
{* FlashFiler: Server exception conversion to dbiResult *}
|
|
{*********************************************************}
|
|
|
|
(* ***** BEGIN LICENSE BLOCK *****
|
|
* Version: MPL 1.1
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
* for the specific language governing rights and limitations under the
|
|
* License.
|
|
*
|
|
* The Original Code is TurboPower FlashFiler
|
|
*
|
|
* The Initial Developer of the Original Code is
|
|
* TurboPower Software
|
|
*
|
|
* Portions created by the Initial Developer are Copyright (C) 1996-2002
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*
|
|
* ***** END LICENSE BLOCK ***** *)
|
|
|
|
{$I ffdefine.inc}
|
|
|
|
unit ffsrcvex;
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes,
|
|
Windows,
|
|
SysUtils,
|
|
ffconst,
|
|
ffllbase,
|
|
fflllog,
|
|
ffsrmgr,
|
|
ffllexcp,
|
|
ffsrbase,
|
|
ffsrbde;
|
|
|
|
function ConvertServerExceptionEx(E : Exception;
|
|
aLog : TffBaseLog;
|
|
const aReadOnly : Boolean) : TffResult;
|
|
|
|
function ConvertServerException(E : Exception; aLog : TffBaseLog) : TffResult;
|
|
|
|
implementation
|
|
|
|
function ConvertServerExceptionEx(E : Exception;
|
|
aLog : TffBaseLog;
|
|
const aReadOnly : Boolean) : TffResult;
|
|
|
|
var
|
|
ErrorCode : integer;
|
|
begin
|
|
{log it}
|
|
if assigned(aLog) and (not aReadOnly) then
|
|
aLog.WriteString(Format('Exception Cvt: %s', [E.Message]));
|
|
|
|
{convert the FlashFiler-specific exceptions}
|
|
if E is EffException then begin
|
|
ErrorCode := EffException(E).ErrorCode;
|
|
case ErrorCode of
|
|
fferrBadStruct : Result := DBIERR_FF_BadStruct;
|
|
fferrOpenFailed : Result := DBIERR_FF_OpenFailed;
|
|
fferrOpenNoMem : Result := DBIERR_FF_OpenNoMem;
|
|
fferrCloseFailed : Result := DBIERR_FF_CloseFailed;
|
|
fferrReadFailed : Result := DBIERR_FF_ReadFailed;
|
|
fferrReadExact : Result := DBIERR_FF_ReadExact;
|
|
fferrWriteFailed : Result := DBIERR_FF_WriteFailed;
|
|
fferrWriteExact : Result := DBIERR_FF_WriteExact;
|
|
fferrSeekFailed : Result := DBIERR_FF_SeekFailed;
|
|
fferrFlushFailed : Result := DBIERR_FF_FlushFailed;
|
|
fferrSetEOFFailed : Result := DBIERR_FF_SetEOFFailed;
|
|
fferrCopyFile : Result := DBIERR_FF_CopyFile;
|
|
fferrDeleteFile : Result := DBIERR_FF_DeleteFile;
|
|
fferrRenameFile : Result := DBIERR_FF_RenameFile;
|
|
fferrNotAnFFFile : Result := DBIERR_UNKNOWNFILE;
|
|
fferrBadBlockNr : Result := DBIERR_FF_BadBlockNr;
|
|
fferrEncrypted : Result := DBIERR_TBLENCRYPTED;
|
|
fferrRecDeleted : Result := DBIERR_FF_RecDeleted;
|
|
fferrBadRefNr : Result := DBIERR_FF_BadRefNr;
|
|
fferrBadDataBlock : Result := DBIERR_FF_BadDataBlock;
|
|
fferrBlobDeleted : Result := DBIERR_BLOBERR;
|
|
fferrBadBlobNr : Result := DBIERR_INVALIDBLOBHANDLE;
|
|
fferrBadBlobBlock,
|
|
fferrBadBlobSeg : Result := DBIERR_BLOBERR;
|
|
fferrLenMismatch : Result := DBIERR_INVALIDBLOBLEN;
|
|
fferrOfsNotInBlob : Result := DBIERR_INVALIDBLOBOFFSET;
|
|
fferrFileBlobWrite : Result := DBIERR_READONLYFLD;
|
|
fferrBadStreamBlock : Result := DBIERR_FF_BadStreamBlock;
|
|
fferrBadStreamOrigin: Result := DBIERR_FF_BadStreamOrigin;
|
|
fferrStreamSeekError: Result := DBIERR_FF_StreamSeekError;
|
|
fferrBadInxBlock : Result := DBIERR_FF_BadInxBlock;
|
|
fferrBadIndex : Result := DBIERR_FF_BadIndex;
|
|
fferrMaxIndexes : Result := DBIERR_FF_MaxIndexes;
|
|
fferrBadMergeCall : Result := DBIERR_FF_BadMergeCall;
|
|
fferrKeyNotFound : Result := DBIERR_FF_KeyNotFound;
|
|
fferrKeyPresent : Result := DBIERR_FF_KeyPresent;
|
|
fferrNoKeys : Result := DBIERR_FF_NoKeys;
|
|
fferrNoSeqAccess : Result := DBIERR_FF_NoSeqAccess;
|
|
fferrBadApproxPos : Result := DBIERR_FF_BadApproxPos;
|
|
fferrBadServerName : Result := DBIERR_FF_BadServerName;
|
|
fferrFFV1File : Result := DBIERR_FF_V1File;
|
|
fferrCommsNoWinRes,
|
|
fferrCommsCannotCall,
|
|
fferrCommsCantListen,
|
|
fferrWinsock,
|
|
fferrWSNoSocket,
|
|
fferrWSNoLocalAddr : Result := DBIERR_NETUNKNOWN;
|
|
fferrUnknownClient,
|
|
fferrUnknownSession : Result := DBIERR_INVALIDHNDL;
|
|
fferrUnknownAlias : Result := DBIERR_UNKNOWNDB;
|
|
fferrUnknownPath : Result := DBIERR_INVALIDDIR;
|
|
fferrUnknownDB : Result := DBIERR_INVALIDHNDL;
|
|
fferrUnknownTable : Result := DBIERR_NOSUCHTABLE;
|
|
fferrUnknownIndex : Result := DBIERR_NOSUCHINDEX;
|
|
fferrUnknownCursor,
|
|
fferrUnknownTrans : Result := DBIERR_INVALIDHNDL;
|
|
fferrUnknownMsg : Result := DBIERR_FF_UnknownMsg;
|
|
fferrTmpStoreFull : Result := DBIERR_FF_TempStorageFull;
|
|
fferrDBExclusive : Result := DBIERR_NEEDEXCLACCESS;
|
|
fferrDBReadOnly : Result := DBIERR_READONLYDB;
|
|
fferrTableExclusive : Result := DBIERR_NEEDEXCLACCESS;
|
|
fferrCursorReadOnly : Result := DBIERR_TABLEREADONLY;
|
|
fferrWriteLocked : Result := DBIERR_LOCKED;
|
|
fferrReadLocked : Result := DBIERR_LOCKED;
|
|
fferrCannotUnlock : Result := DBIERR_UNLOCKFAILED;
|
|
fferrTableLocked : Result := DBIERR_FILELOCKED;
|
|
fferrRecLocked : Result := DBIERR_LOCKED;
|
|
fferrNoCurrentRec : Result := DBIERR_NOCURRREC;
|
|
fferrTableMismatch : Result := DBIERR_DIFFERENTTABLES;
|
|
fferrNoNextRecord : Result := DBIERR_EOF;
|
|
fferrNoPriorRecord : Result := DBIERR_BOF;
|
|
fferrTableExists : Result := DBIERR_TABLEEXISTS;
|
|
fferrBadFieldXform : Result := DBIERR_INVALIDXLATION;
|
|
fferrBadBookmark : Result := DBIERR_INVALIDBOOKMARK;
|
|
fferrTransactionFailed : Result := DBIERR_WRITEERR;
|
|
fferrTableFull : Result := DBIERR_TABLEFULL;
|
|
fferrDiskFull : Result := DBIERR_NODISKSPACE; {!!.11}
|
|
fferrTableVersion : Result := DBIERR_FF_TABLEVERSION; {!!.11}
|
|
fferrInvalidSqlStmtHandle : Result := DBIERR_INVALIDHNDL;
|
|
fferrBLOBTooBig : Result := DBIERR_FF_BLOBTooBig;
|
|
fferrDeadlock : Result := DBIERR_FF_Deadlock;
|
|
fferrLockTimeout : Result := DBIERR_LOCKED;
|
|
fferrLockRejected : Result := DBIERR_LOCKED; {!!.02}
|
|
fferrTableLockTimeout : Result := DBIERR_FILELOCKED;
|
|
fferrGeneralTimeout : Result := DBIERR_FF_GeneralTimeout;
|
|
fferrNoSQLEngine : Result := DBIERR_FF_NoSQLEngine;
|
|
fferrIndexNotSupported : Result := DBIERR_INVALIDINDEXCREATE;
|
|
fferrInvalidTableName : Result := DBIERR_INVALIDTABLENAME;
|
|
fferrRangeNotSupported : Result := DBIERR_FF_RangeNotSupported;
|
|
fferrTableOpen : Result := DBIERR_TABLEOPEN;
|
|
DBIERR_TABLEREADONLY : Result := ErrorCode; {!!.06}
|
|
fferrIncompatDict : Result := DBIERR_FF_IncompatDict; {!!.06}
|
|
fferrSameTable : Result := DBIERR_FF_SameTable; {!!.06}
|
|
else
|
|
Result := DBIERR_FF_Unknown;
|
|
end;{case}
|
|
end
|
|
{convert out of memory errors}
|
|
else if E is EOutOfMemory then begin
|
|
Result := DBIERR_NOMEMORY;
|
|
end
|
|
{convert all other exceptions to fatal error code}
|
|
else
|
|
Result := DBIERR_FF_UnknownExcp;
|
|
end;
|
|
{--------}
|
|
function ConvertServerException(E : Exception; aLog : TffBaseLog) : TffResult;
|
|
begin
|
|
Result := ConvertServerExceptionEx(E, aLog, False);
|
|
end;
|
|
|
|
end.
|