internal OrientConnection(
            IOrientDBRecordSerializer <TDataType> serializer,
            IOrientDBConnectionProtocol <TDataType> connectionProtocol,
            ILogger logger,
            string database,
            DatabaseType databaseType,
            int poolSize = 10)
        {
            if (serializer == null)
            {
                throw new ArgumentNullException($"{nameof(serializer)}");
            }
            if (connectionProtocol == null)
            {
                throw new ArgumentNullException($"{nameof(connectionProtocol)}");
            }
            if (string.IsNullOrWhiteSpace(database))
            {
                throw new ArgumentException($"{nameof(database)}");
            }
            _logger = logger ?? throw new ArgumentNullException($"{nameof(logger)}");

            _serverConnection   = connectionProtocol.CreateServerConnection(serializer, logger);
            _databaseConnection = _serverConnection.DatabaseConnect(database, databaseType, poolSize);
        }
 public IOrientServerConnection CreateConnection()
 {
     return _connectionProtocol.CreateServerConnection(_serializer, _logger);
 }