Add a Config class to simplify adding configuration settings
The typical use is to inherit Config and add Setting<T> members:
  class MyClass : private Config
  {
    Setting<int> foo{this, 123, "foo", "the number of foos to use"};
    Setting<std::string> bar{this, "blabla", "bar", "the name of the bar"};
    MyClass() : Config(readConfigFile("/etc/my-app.conf"))
    {
      std::cout << foo << "\n"; // will print 123 unless overriden
    }
  };
Currently, this is used by Store and its subclasses for store
parameters. You now get a warning if you specify a non-existant store
parameter in a store URI.
			
			
This commit is contained in:
		
							parent
							
								
									568a099c88
								
							
						
					
					
						commit
						2040240e23
					
				
					 16 changed files with 334 additions and 40 deletions
				
			
		| 
						 | 
				
			
			@ -12,6 +12,10 @@ static std::string uriScheme = "ssh://";
 | 
			
		|||
 | 
			
		||||
struct LegacySSHStore : public Store
 | 
			
		||||
{
 | 
			
		||||
    const Setting<int> maxConnections{this, 1, "max-connections", "maximum number of concurrent SSH connections"};
 | 
			
		||||
    const Setting<Path> sshKey{this, "", "ssh-key", "path to an SSH private key"};
 | 
			
		||||
    const Setting<bool> compress{this, false, "compress", "whether to compress the connection"};
 | 
			
		||||
 | 
			
		||||
    struct Connection
 | 
			
		||||
    {
 | 
			
		||||
        std::unique_ptr<SSHMaster::Connection> sshConn;
 | 
			
		||||
| 
						 | 
				
			
			@ -29,16 +33,16 @@ struct LegacySSHStore : public Store
 | 
			
		|||
        : Store(params)
 | 
			
		||||
        , host(host)
 | 
			
		||||
        , connections(make_ref<Pool<Connection>>(
 | 
			
		||||
            std::max(1, std::stoi(get(params, "max-connections", "1"))),
 | 
			
		||||
            std::max(1, (int) maxConnections),
 | 
			
		||||
            [this]() { return openConnection(); },
 | 
			
		||||
            [](const ref<Connection> & r) { return true; }
 | 
			
		||||
            ))
 | 
			
		||||
        , master(
 | 
			
		||||
            host,
 | 
			
		||||
            get(params, "ssh-key", ""),
 | 
			
		||||
            sshKey,
 | 
			
		||||
            // Use SSH master only if using more than 1 connection.
 | 
			
		||||
            connections->capacity() > 1,
 | 
			
		||||
            get(params, "compress", "") == "true")
 | 
			
		||||
            compress)
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue