<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "Tor",
  "identifier" : "/documentation/Tor/TorControlClient/init(fileDescriptor:preAuthenticated:dataDirectory:)",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "Tor"
    ],
    "preciseIdentifier" : "s:3Tor0A13ControlClientC14fileDescriptor16preAuthenticated13dataDirectoryACs5Int32V_SbSSSgtcfc"
  },
  "title" : "init(fileDescriptor:preAuthenticated:dataDirectory:)"
}
-->

# init(fileDescriptor:preAuthenticated:dataDirectory:)

Wrap a raw file descriptor, optionally marking it as
pre-authenticated.

```
init(fileDescriptor: Int32, preAuthenticated: Bool = false, dataDirectory: String? = nil)
```

## Parameters

`fileDescriptor`

A valid, connected control-socket FD.

`preAuthenticated`

When `true`, [`isAuthenticated`](/documentation/Tor/TorControlClient/isAuthenticated) starts
as `true` and [`authenticate(password:)`](/documentation/Tor/TorControlClient/authenticate(password:)) is a no-op.
Defaults to `false`.

`dataDirectory`

Optional path to Tor’s data directory (for
cookie-based authentication on non-embedded sockets).

## Discussion

The primary embedded-mode initialiser. Swift-tor passes the FD
returned by `tor_main_configuration_setup_control_socket()` with
`preAuthenticated: true`, because the `tor_api` control socket
is granted full control access without going through
`AUTHENTICATE`.

> Important: The wrapper does **not** take ownership of the FD
> (`ownsDescriptor: false` is passed to ``doc://Tor/documentation/Tor/ControlSocket``).
> Caller (usually ``doc://Tor/documentation/Tor/TorClient/stop()``) is responsible for
> closing the FD when the Tor instance exits.