summaryrefslogtreecommitdiff
path: root/Presence/SendMessage.hs
diff options
context:
space:
mode:
authorjoe <joe@jerkface.net>2013-07-29 23:50:14 -0400
committerjoe <joe@jerkface.net>2013-07-29 23:50:14 -0400
commit36637654a5d18125370ba1323e9e96a6bc01441f (patch)
tree5b73b888998f17c53972f34b4832400e70e07d56 /Presence/SendMessage.hs
parent4fca264f84572a7e2c28fa6762d154bcd796fb33 (diff)
Progress toward support for messaging.
Diffstat (limited to 'Presence/SendMessage.hs')
-rw-r--r--Presence/SendMessage.hs13
1 files changed, 8 insertions, 5 deletions
diff --git a/Presence/SendMessage.hs b/Presence/SendMessage.hs
index d1db7a4f..8b4d00f7 100644
--- a/Presence/SendMessage.hs
+++ b/Presence/SendMessage.hs
@@ -1,6 +1,7 @@
1{-# LANGUAGE CPP #-} 1{-# LANGUAGE CPP #-}
2{-# LANGUAGE TypeFamilies #-} 2{-# LANGUAGE TypeFamilies #-}
3{-# LANGUAGE FlexibleContexts #-} 3{-# LANGUAGE FlexibleContexts #-}
4{-# LANGUAGE OverloadedStrings #-}
4module SendMessage 5module SendMessage
5 ( sendMessage 6 ( sendMessage
6 , CommandCache(..) 7 , CommandCache(..)
@@ -46,13 +47,15 @@ import Network.Socket
46 , SocketType(..) 47 , SocketType(..)
47 ) 48 )
48 49
49import XMPPTypes (Peer(..),discardPort,peerAddr,withPort,socketFamily) 50import XMPPTypes (Peer(..),discardPort,peerAddr,withPort,socketFamily,showPeer)
50import SocketLike 51import SocketLike
51import ServerC (packetSink) 52import ServerC (packetSink)
52import ControlMaybe 53import ControlMaybe
53import Data.Conduit (Sink,Source) 54import Data.Conduit (Sink,Source)
54import qualified Data.ByteString as S (ByteString) 55import qualified Data.ByteString as S (ByteString)
55import XMLToByteStrings 56import XMLToByteStrings
57import Logging
58import ByteStringOperators
56 59
57type ByteStringSink = Sink S.ByteString IO () 60type ByteStringSink = Sink S.ByteString IO ()
58 61
@@ -94,7 +97,7 @@ newOutgoingConnections interpretCommands = do
94 97
95 98
96sendMessage 99sendMessage
97 :: (CommandCache a, ThreadChannelCommand (CacheableCommand a)) => 100 :: (Show (CacheableCommand a), CommandCache a, ThreadChannelCommand (CacheableCommand a)) =>
98 OutgoingConnections a -> CacheableCommand a -> Peer -> IO () 101 OutgoingConnections a -> CacheableCommand a -> Peer -> IO ()
99sendMessage (OutgoingConnections cons interpretCommands) msg peer0 = do 102sendMessage (OutgoingConnections cons interpretCommands) msg peer0 = do
100 let peer = discardPort peer0 103 let peer = discardPort peer0
@@ -192,7 +195,7 @@ type OutBoundXML sock cache msg =
192 -> Source IO [XML.Event] 195 -> Source IO [XML.Event]
193 196
194handleOutgoingToPeer 197handleOutgoingToPeer
195 :: SocketLike sock => 198 :: (SocketLike sock, Show msg) =>
196 OutBoundXML sock cache msg 199 OutBoundXML sock cache msg
197 -> sock 200 -> sock
198 -> cache 201 -> cache
@@ -201,11 +204,11 @@ handleOutgoingToPeer
201 -> IO (Maybe msg) 204 -> IO (Maybe msg)
202handleOutgoingToPeer toPeer sock cache chan snk = do 205handleOutgoingToPeer toPeer sock cache chan snk = do
203 p <- getPeerName sock 206 p <- getPeerName sock
204 -- L.putStrLn $ "(>P) connected " <++> showPeer (RemotePeer p) 207 debugL $ "(>P) connected " <++> showPeer (RemotePeer p)
205 failed <- newIORef Nothing 208 failed <- newIORef Nothing
206 let failure cmd = do 209 let failure cmd = do
207 writeIORef failed cmd 210 writeIORef failed cmd
208 -- putStrLn $ "Failed: " ++ show cmd 211 debugStr $ "Failed: " ++ show cmd
209 finally ( 212 finally (
210 handleIO_ (return ()) $ toPeer sock cache chan failure `xmlToByteStrings` snk 213 handleIO_ (return ()) $ toPeer sock cache chan failure `xmlToByteStrings` snk
211 ) $ return () -- logging L.putStrLn $ "(>P) disconnected " <++> showPeer (RemotePeer p) 214 ) $ return () -- logging L.putStrLn $ "(>P) disconnected " <++> showPeer (RemotePeer p)