# AsyncDistributedSqlEngine:open( parameter list )

This article is deprecated.

> Start the connection pool, and synchronously connect all worker processes.

> ### Prototype

>         bool open(char const* const* nodes, int nNodes,
>                 int nReplicas = 1,
>                 ReplicationType replType = SQL_REPLICATION,
>                 int maxConnectAttempts = 10,
>                 int* badNode = NULL,
>                 bool localDomain = false,
>                 void* sslParameters = NULL,
>                 timer_unit connectTimeout = 2*1000,
>                 timer_unit readTimeout = 1200*1000);

> ### Arguments

> nodes | An array with the node names and ports ("NAME:PORT")
> nNodes | The number of nodes
> nReplicas | The number of replicas; this number should be a divider of `nNodes` meaning that the remainder of `nNodes / nReplicas` is `0`. For example, the values of `nNodes` and `nReplicas` could be (4 and 2) or (12 and 3) but not (6 and 4) because 6 % 4 = 2
> replType | The replication method
> maxConnectAttempts | The maximum number of attempts to connect to the server
> badNode | If this parameter is not null and the open fails, then the index of the node specification in `nodes` for the node that could not be connected is stored in `badNode`
> localDomain | Indicates that Unix Domain Socket instead of networked TCP socket is used for RSQL communication which is possible only when server and client are on the same host
> sslParameters | A pointer to a `mco_ssl_params_t` structure containing SSL connection settings
> connectTimeout | The timeout for each connect attempt in milliseconds; the total connection time can be up to `connectTimeout * maxConnectionAttempts` milliseconds
> readTimeout | The timeout for read operations in milliseconds

> ### Description

> This method opens an eXtremeDB database, an eXtremeDB SQL mapper and the AsyncDistributedSqlEngine instance with the list of parameters specified. Internally, it creates worker processes, each of which handles connections, sends queries and receives results.

> ### Returns

> This method returns `true` if the connection to the server was successfully established, `false` otherwise.

> ### Example

>         const size_t nWorkers = 4;
>         const char *nodes[] =
>         {
>             "localhost:5001",
>             "localhost:5002"
>         };

>         int main(int argc, char** argv)
>         {
>             try {

>                 McoSql::AsyncDistributedSqlEngine engine(nWorkers);
>                 if (!engine.open(nodes, sizeof(nodes) / sizeof(nodes[0])))
>                 {
>                     printf("Open failed: %s\n", engine.getError()->cstr());
>                     return 1;
>                 }
>                 ...
>             }
>         }