mirror of https://github.com/voidlizard/hbs2
wip, hunting busyloop
This commit is contained in:
parent
541ecccd0b
commit
78c168fcaa
|
@ -392,10 +392,10 @@ runMessagingTCP env@MessagingTCP{..} = liftIO do
|
||||||
-- client sockets
|
-- client sockets
|
||||||
|
|
||||||
-- смотрим к кому надо
|
-- смотрим к кому надо
|
||||||
who <- atomically do
|
who <- atomically $ fix \next -> do
|
||||||
who <- readTQueue _tcpConnDemand
|
who <- readTQueue _tcpConnDemand
|
||||||
already <- readTVar _tcpPeerConn <&> HM.member who
|
already <- readTVar _tcpPeerConn <&> HM.member who
|
||||||
if not already then pure who else STM.retry
|
if not already then pure who else next
|
||||||
|
|
||||||
debug $ "DEMAND:" <+> pretty who
|
debug $ "DEMAND:" <+> pretty who
|
||||||
|
|
||||||
|
|
|
@ -287,15 +287,13 @@ runMessagingUnix env = do
|
||||||
|
|
||||||
sock <- ContT $ bracket openSock closeSock
|
sock <- ContT $ bracket openSock closeSock
|
||||||
|
|
||||||
sockReady <- newTVarIO False
|
|
||||||
|
|
||||||
void $ ContT $ bracket (createQueues env who) dropQueuesFor
|
void $ ContT $ bracket (createQueues env who) dropQueuesFor
|
||||||
|
|
||||||
let attemptConnect = do
|
let attemptConnect = do
|
||||||
result <- liftIO $ try $ connect sock $ SockAddrUnix (msgUnixSockPath env)
|
result <- liftIO $ try $ connect sock $ SockAddrUnix (msgUnixSockPath env)
|
||||||
case result of
|
case result of
|
||||||
Right _ -> do
|
Right _ -> do
|
||||||
atomically $ writeTVar sockReady True
|
none
|
||||||
|
|
||||||
Left (e :: SomeException) -> do
|
Left (e :: SomeException) -> do
|
||||||
warn $ "MessagingUnix. failed to connect" <+> pretty sa <+> viaShow e
|
warn $ "MessagingUnix. failed to connect" <+> pretty sa <+> viaShow e
|
||||||
|
@ -308,9 +306,6 @@ runMessagingUnix env = do
|
||||||
|
|
||||||
forever do
|
forever do
|
||||||
|
|
||||||
atomically do
|
|
||||||
readTVar sockReady `orElse` retry
|
|
||||||
|
|
||||||
-- Мы клиент. Шлём кому? **ЕМУ**, на том конце трубы.
|
-- Мы клиент. Шлём кому? **ЕМУ**, на том конце трубы.
|
||||||
-- У нас один контрагент, имя сокета (файла) == адрес пира.
|
-- У нас один контрагент, имя сокета (файла) == адрес пира.
|
||||||
-- Как в TCP порт сервиса (а отвечает тот с другого порта)
|
-- Как в TCP порт сервиса (а отвечает тот с другого порта)
|
||||||
|
|
Loading…
Reference in New Issue