{
  $Project$
  $Workfile$
  $Revision$
  $DateUTC$
  $Id$

  This file is part of the Indy (Internet Direct) project, and is offered
  under the dual-licensing agreement described on the Indy website.
  (http://www.indyproject.org/)

  Copyright:
   (c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
}
{
  $Log$
}
{
  Rev 1.3    09/06/2004 09:52:34  CCostelloe
  Kylix 3 patch

  Rev 1.2    6/4/2004 5:12:56 PM  SGrobety
  added EIdMaxCaptureLineExceeded

  Rev 1.1    2/10/2004 7:41:50 PM  JPMugaas
  I had to move EWrapperException down to the system package because
  IdStackDotNET was using it and that would drage IdExceptionCore into the
  package.  Borland changed some behavior so the warning is now an error.

  Rev 1.0    2004.02.03 4:19:48 PM  czhower
  Rename

  Rev 1.15    11/4/2003 10:26:58 PM  DSiders
  Added exceptions moved from IdIOHandler.pas and IdTCPConnection.pas.

  Rev 1.14    2003.10.16 11:24:00 AM  czhower
  Added IfAssigned

  Rev 1.13    2003.10.11 5:47:58 PM  czhower
  -VCL fixes for servers
  -Chain suport for servers (Super core)
  -Scheduler upgrades
  -Full yarn support

  Rev 1.12    10/3/2003 11:38:36 PM  GGrieve
  Add EIdWrapperException

  Rev 1.11    9/29/2003 02:56:28 PM  JPMugaas
  Added comment about why IdException.Create is virtual.

  Rev 1.10    9/24/2003 11:42:50 PM  JPMugaas
  Minor changes to help compile under NET

  Rev 1.9    2003.09.19 10:10:02 PM  czhower
  IfTrue, IfFalse

  Rev 1.8    2003.09.19 11:54:28 AM  czhower
  -Completed more features necessary for servers
  -Fixed some bugs

  Rev 1.7    2003.07.17 4:57:04 PM  czhower
  Added new exception type so it can be added to debugger list of ignored
  exceptions.

  Rev 1.6    7/1/2003 8:33:02 PM  BGooijen
  Added EIdFibersNotSupported

  Rev 1.5    2003.06.05 10:08:50 AM  czhower
  Extended reply mechanisms to the exception handling. Only base and RFC
  completed, handing off to J Peter.

  Rev 1.4    5/14/2003 2:59:58 PM  BGooijen
  Added exception for transparant proxy

  Rev 1.3    2003.04.14 10:54:06 AM  czhower
  Fiber specific exceptions

  Rev 1.2    4/2/2003 7:18:38 PM  BGooijen
  Added EIdHttpProxyError

  Rev 1.1    1/17/2003 05:06:46 PM  JPMugaas
  Exceptions for scheduler string.

  Rev 1.0    11/13/2002 08:44:10 AM  JPMugaas
}

unit IdExceptionCore;

interface

uses
  IdException, IdStack,
  IdSys;

type
  // IdFiber Exceptions
  EIdFiber = class(EIdException);
  EIdFiberFinished = class(EIdFiber);
  EIdFibersNotSupported = class(EIdFiber);

  EIdAlreadyConnected = class(EIdException);

  // EIdClosedSocket is raised if .Disconnect has been called and an operation is attempted
  // or Connect has not been called
  EIdClosedSocket = class(EIdException);
  EIdResponseError = class(EIdException);
  EIdReadTimeout = class(EIdException);
  EIdAcceptTimeout = class(EIdException);
  EIdReadLnMaxLineLengthExceeded = class(EIdException);

  // TIdTCPConnection exceptions
  EIdPortRequired = class(EIdException);
  EIdHostRequired = class(EIdException);
  EIdTCPConnectionError = class(EIdException);
  EIdObjectTypeNotSupported = class(EIdTCPConnectionError);
  EIdInterceptPropIsNil = class(EIdTCPConnectionError);
  EIdInterceptPropInvalid = class(EIdTCPConnectionError);
  EIdIOHandlerPropInvalid = class(EIdTCPConnectionError);
  EIdNoDataToRead = class(EIdTCPConnectionError);
  EIdFileNotFound = class(EIdTCPConnectionError);

  EIdNotConnected = class(EIdException);

  EInvalidSyslogMessage = class(EIdException);
  EIdSSLProtocolReplyError = class(EIdException);
  EIdConnectTimeout = class(EIdException);
  EIdConnectException = class(EIdException);

  EIdTransparentProxyCantBind = class(EIdException);

  EIdHttpProxyError = class(EIdException);

  EIdSocksError = class(EIdException);
  EIdSocksRequestFailed = class(EIdSocksError);
  EIdSocksRequestServerFailed = class(EIdSocksError);
  EIdSocksRequestIdentFailed = class(EIdSocksError);
  EIdSocksUnknownError = class(EIdSocksError);
  EIdSocksServerRespondError = class(EIdSocksError);
  EIdSocksAuthMethodError = class(EIdSocksError);
  EIdSocksAuthError = class(EIdSocksError);
  EIdSocksServerGeneralError = class(EIdSocksError);
  EIdSocksServerPermissionError = class (EIdSocksError);
  EIdSocksServerNetUnreachableError = class (EIdSocksError);
  EIdSocksServerHostUnreachableError = class (EIdSocksError);
  EIdSocksServerConnectionRefusedError = class (EIdSocksError);
  EIdSocksServerTTLExpiredError = class (EIdSocksError);
  EIdSocksServerCommandError = class (EIdSocksError);
  EIdSocksServerAddressError = class (EIdSocksError);

  //IdIMAP4 Exception
  EIdConnectionStateError = class(EIdException);

  // THE EDnsResolverError is used so the resolver can repond to only resolver execeptions.
  EIdDnsResolverError = Class(EIdException);

  {Socket exceptions}
  EIdInvalidSocket = class(EIdException);

  EIdThreadMgrError = class(EIdException);
  EIdThreadClassNotSpecified = class(EIdThreadMgrError);

  {TIdTrivial FTP Exception }
  EIdTFTPException               = class(EIdException);
  EIdTFTPFileNotFound            = class(EIdTFTPException);
  EIdTFTPAccessViolation         = class(EIdTFTPException);
  EIdTFTPAllocationExceeded      = class(EIdTFTPException);
  EIdTFTPIllegalOperation        = class(EIdTFTPException);
  EIdTFTPUnknownTransferID       = class(EIdTFTPException);
  EIdTFTPFileAlreadyExists       = class(EIdTFTPException);
  EIdTFTPNoSuchUser              = class(EIdTFTPException);
  EIdTFTPOptionNegotiationFailed = class(EIdTFTPException);  // RFC 1782

  {Icmp exceptions}
  EIdIcmpException = class(EIdException);

  EIdSetSizeExceeded = class(EIdException);

  {IdMessage and things use this}
  EIdMessageException = class(EIdException);

  { resolving hostnames }
  EIdResolveError = class(EIdSocketError);
  EIdReverseResolveError = class(EIdSocketError);
  //scheduler exception
  EIdSchedulerException = class(EIdException);
  EIdSchedulerMaxThreadsExceeded = class(EIdSchedulerException);

  { IdIOHandler }
  EIdMaxCaptureLineExceeded = class(EIdException); // S.G. 6/4/2004: triggered when a capture command exceeds the maximum number of line allowed

implementation

end.
