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,9 +78,22 @@ 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() | std::string UDSRemoteStore::getUri() | ||||||
| { | { | ||||||
|     return "daemon"; |     if (path) { | ||||||
|  |         return std::string("unix://") + *path; | ||||||
|  |     } else { | ||||||
|  |         return "daemon"; | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -98,7 +111,7 @@ ref<RemoteStore::Connection> UDSRemoteStore::openConnection() | ||||||
|         throw SysError("cannot create Unix domain socket"); |         throw SysError("cannot create Unix domain socket"); | ||||||
|     closeOnExec(conn->fd.get()); |     closeOnExec(conn->fd.get()); | ||||||
| 
 | 
 | ||||||
|     string socketPath = settings.nixDaemonSocketFile; |     string socketPath = path ? *path : settings.nixDaemonSocketFile; | ||||||
| 
 | 
 | ||||||
|     struct sockaddr_un addr; |     struct sockaddr_un addr; | ||||||
|     addr.sun_family = AF_UNIX; |     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: | public: | ||||||
| 
 | 
 | ||||||
|     UDSRemoteStore(const Params & params); |     UDSRemoteStore(const Params & params); | ||||||
|  |     UDSRemoteStore(std::string path, const Params & params); | ||||||
| 
 | 
 | ||||||
|     std::string getUri() override; |     std::string getUri() override; | ||||||
| 
 | 
 | ||||||
|  | @ -145,6 +146,7 @@ private: | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     ref<RemoteStore::Connection> openConnection() override; |     ref<RemoteStore::Connection> openConnection() override; | ||||||
|  |     std::experimental::optional<std::string> path; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue