Merge pull request #1801 from catern/master
remote_store: register for NIX_REMOTE=unix://path
This commit is contained in:
		
						commit
						c129fc6ee8
					
				
					 2 changed files with 26 additions and 2 deletions
				
			
		|  | @ -78,10 +78,23 @@ UDSRemoteStore::UDSRemoteStore(const Params & params) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| UDSRemoteStore::UDSRemoteStore(std::string socket_path, const Params & params) | ||||
|     : Store(params) | ||||
|     , LocalFSStore(params) | ||||
|     , RemoteStore(params) | ||||
|     , path(socket_path) | ||||
| { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| std::string UDSRemoteStore::getUri() | ||||
| { | ||||
|     if (path) { | ||||
|         return std::string("unix://") + *path; | ||||
|     } else { | ||||
|         return "daemon"; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| ref<RemoteStore::Connection> UDSRemoteStore::openConnection() | ||||
|  | @ -98,7 +111,7 @@ ref<RemoteStore::Connection> UDSRemoteStore::openConnection() | |||
|         throw SysError("cannot create Unix domain socket"); | ||||
|     closeOnExec(conn->fd.get()); | ||||
| 
 | ||||
|     string socketPath = settings.nixDaemonSocketFile; | ||||
|     string socketPath = path ? *path : settings.nixDaemonSocketFile; | ||||
| 
 | ||||
|     struct sockaddr_un addr; | ||||
|     addr.sun_family = AF_UNIX; | ||||
|  | @ -721,5 +734,14 @@ void RemoteStore::Connection::processStderr(Sink * sink, Source * source) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| static std::string uriScheme = "unix://"; | ||||
| 
 | ||||
| static RegisterStoreImplementation regStore([]( | ||||
|     const std::string & uri, const Store::Params & params) | ||||
|     -> std::shared_ptr<Store> | ||||
| { | ||||
|     if (std::string(uri, 0, uriScheme.size()) != uriScheme) return 0; | ||||
|     return std::make_shared<UDSRemoteStore>(std::string(uri, uriScheme.size()), params); | ||||
| }); | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -134,6 +134,7 @@ class UDSRemoteStore : public LocalFSStore, public RemoteStore | |||
| public: | ||||
| 
 | ||||
|     UDSRemoteStore(const Params & params); | ||||
|     UDSRemoteStore(std::string path, const Params & params); | ||||
| 
 | ||||
|     std::string getUri() override; | ||||
| 
 | ||||
|  | @ -145,6 +146,7 @@ private: | |||
|     }; | ||||
| 
 | ||||
|     ref<RemoteStore::Connection> openConnection() override; | ||||
|     std::experimental::optional<std::string> path; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue