Servidor proxy usando Indy

Soy nuevo en Indy y quiero construir un servidor proxy simple con él. Esta es una biblioteca bastante grande, y no sé por dónde empezar. Cuando el cliente se conecta al servidor, OnExucute se activa y recibe la conexión del cliente como parámetro (AContext.Connection).

Quiero hacer lo siguiente:

[client connection] := AContext.Connection
read host/port from [client connection]
[remote connection] := connect to host/port
while both connections alive:
  if data available in [client connection]:
    read data from [client connection]
    write data to [remote connection]
  if data available in [remote connection]:
    read data from [remote connection]
    write data to [client connection]

La pregunta es ¿qué funciones debo usar para eso? Ahi estaIOHandler propiedad en objeto de conexión con toneladas de ellos. Por favor ayuda.

Estoy usando Indy que se envía con Delphi2010.