diff options
author | joe <joe@jerkface.net> | 2013-07-29 23:50:14 -0400 |
---|---|---|
committer | joe <joe@jerkface.net> | 2013-07-29 23:50:14 -0400 |
commit | 36637654a5d18125370ba1323e9e96a6bc01441f (patch) | |
tree | 5b73b888998f17c53972f34b4832400e70e07d56 /Presence/SendMessage.hs | |
parent | 4fca264f84572a7e2c28fa6762d154bcd796fb33 (diff) |
Progress toward support for messaging.
Diffstat (limited to 'Presence/SendMessage.hs')
-rw-r--r-- | Presence/SendMessage.hs | 13 |
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 #-} | ||
4 | module SendMessage | 5 | module SendMessage |
5 | ( sendMessage | 6 | ( sendMessage |
6 | , CommandCache(..) | 7 | , CommandCache(..) |
@@ -46,13 +47,15 @@ import Network.Socket | |||
46 | , SocketType(..) | 47 | , SocketType(..) |
47 | ) | 48 | ) |
48 | 49 | ||
49 | import XMPPTypes (Peer(..),discardPort,peerAddr,withPort,socketFamily) | 50 | import XMPPTypes (Peer(..),discardPort,peerAddr,withPort,socketFamily,showPeer) |
50 | import SocketLike | 51 | import SocketLike |
51 | import ServerC (packetSink) | 52 | import ServerC (packetSink) |
52 | import ControlMaybe | 53 | import ControlMaybe |
53 | import Data.Conduit (Sink,Source) | 54 | import Data.Conduit (Sink,Source) |
54 | import qualified Data.ByteString as S (ByteString) | 55 | import qualified Data.ByteString as S (ByteString) |
55 | import XMLToByteStrings | 56 | import XMLToByteStrings |
57 | import Logging | ||
58 | import ByteStringOperators | ||
56 | 59 | ||
57 | type ByteStringSink = Sink S.ByteString IO () | 60 | type ByteStringSink = Sink S.ByteString IO () |
58 | 61 | ||
@@ -94,7 +97,7 @@ newOutgoingConnections interpretCommands = do | |||
94 | 97 | ||
95 | 98 | ||
96 | sendMessage | 99 | sendMessage |
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 () |
99 | sendMessage (OutgoingConnections cons interpretCommands) msg peer0 = do | 102 | sendMessage (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 | ||
194 | handleOutgoingToPeer | 197 | handleOutgoingToPeer |
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) |
202 | handleOutgoingToPeer toPeer sock cache chan snk = do | 205 | handleOutgoingToPeer 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) |