Revision 5e671e0e
b/src/Ganeti/Query/Server.hs | ||
---|---|---|
356 | 356 |
return () |
357 | 357 |
|
358 | 358 |
-- | Type alias for prepMain results |
359 |
type PrepResult = (FilePath, Server, IORef (Result ConfigData), JQStatus)
|
|
359 |
type PrepResult = (Server, IORef (Result ConfigData), JQStatus) |
|
360 | 360 |
|
361 | 361 |
-- | Check function for luxid. |
362 | 362 |
checkMain :: CheckFn () |
... | ... | |
371 | 371 |
Nothing (Just socket_path) $ getLuxiServer True socket_path |
372 | 372 |
cref <- newIORef (Bad "Configuration not yet loaded") |
373 | 373 |
jq <- emptyJQStatus |
374 |
return (socket_path, s, cref, jq)
|
|
374 |
return (s, cref, jq) |
|
375 | 375 |
|
376 | 376 |
-- | Main function. |
377 | 377 |
main :: MainFn () PrepResult |
378 |
main _ _ (socket_path, server, cref, jq) = do
|
|
378 |
main _ _ (server, cref, jq) = do |
|
379 | 379 |
initConfigReader id cref |
380 | 380 |
let creader = readIORef cref |
381 | 381 |
initJQScheduler jq |
... | ... | |
386 | 386 |
|
387 | 387 |
finally |
388 | 388 |
(forever $ listener qlock jq creader server) |
389 |
(closeServer socket_path server) |
|
389 |
(closeServer server) |
b/src/Ganeti/UDSServer.hs | ||
---|---|---|
116 | 116 |
|
117 | 117 |
-- | A server encapsulation. |
118 | 118 |
data Server = Server { sSocket :: S.Socket -- ^ The bound server socket |
119 |
, sPath :: FilePath -- ^ The scoket's path |
|
119 | 120 |
, serverConfig :: ConnectConfig |
120 | 121 |
} |
121 | 122 |
|
... | ... | |
142 | 143 |
when setOwner . setOwnerAndGroupFromNames path (connDaemon conf) $ |
143 | 144 |
ExtraGroup DaemonsGroup |
144 | 145 |
S.listen s 5 -- 5 is the max backlog |
145 |
return Server { sSocket=s, serverConfig=conf } |
|
146 |
return Server { sSocket=s, sPath=path, serverConfig=conf }
|
|
146 | 147 |
|
147 | 148 |
-- | Closes a server endpoint. |
148 | 149 |
-- FIXME: this should be encapsulated into a nicer type. |
149 |
closeServer :: FilePath -> Server -> IO ()
|
|
150 |
closeServer path server = do
|
|
150 |
closeServer :: Server -> IO () |
|
151 |
closeServer server = do |
|
151 | 152 |
S.sClose (sSocket server) |
152 |
removeFile path
|
|
153 |
removeFile (sPath server)
|
|
153 | 154 |
|
154 | 155 |
-- | Accepts a client |
155 | 156 |
acceptClient :: Server -> IO Client |
b/test/hs/Test/Ganeti/Luxi.hs | ||
---|---|---|
136 | 136 |
_ <- run . forkIO $ |
137 | 137 |
bracket |
138 | 138 |
(Luxi.acceptClient server) |
139 |
(\c -> Luxi.closeClient c >> Luxi.closeServer fpath server)
|
|
139 |
(\c -> Luxi.closeClient c >> Luxi.closeServer server) |
|
140 | 140 |
luxiServerPong |
141 | 141 |
replies <- run $ |
142 | 142 |
bracket |
Also available in: Unified diff