fudgets-0.18.3: hsrc/xtypes/Sockets.hs
module Sockets(DLValue,module Sockets) where
import Event(XEvent)
import Xtypes(WindowId,Display)
import PackedString(PackedString)
import DLValue
import System.Posix.DynamicLinker(DL)
-- NOTE: Matching definitions for the C world appear in xlib/sockets.h --------
data SocketRequest = OpenLSocket Port -- -> SR LSocket
| OpenSocket Host Port -- -> SR Socket
| WriteSocket Socket String -- -> SR Success
| CloseSocket Socket -- -> SR Success
| CloseLSocket LSocket -- -> SR Success
| GetStdinSocket -- -> SR Socket
| CreateTimer Int Int -- -> SR Timer
| DestroyTimer Timer -- -> Success
| GetLSocketName LSocket -- -> Str
| GetSocketName Socket -- -> Str
| StartProcess String Bool Bool Bool -- -> ProcessSockets
| DLOpen String -- -> SR DLHandle
| DLClose DLHandle -- -> Success
| DLSym DLHandle String -- -> SR DLValue
| OpenFileAsSocket String String -- -> SR Socket
-- name, mode (as in fopen(name,mode))
| WriteSocketPS Socket PackedString -- -> SR Wrote
| GetStdoutSocket -- -> SR Socket
deriving (Show,Read)
data SocketResponse = LSocket LSocket
| Socket Socket
| Timer Timer
| ProcessSockets (Maybe Socket) (Maybe Socket) (Maybe Socket)
| DLHandle DLHandle
| DLVal DLValue
| Wrote Int
deriving (Show,Read) --(Eq, Ord, Text)
type Port = Int
type Host = String
type Peer = Host
newtype Socket = So Int deriving (Eq,Ord,Show,Read)
newtype LSocket = LSo Int deriving (Eq,Ord,Show,Read)
newtype Timer = Ti Int deriving (Eq,Ord,Show,Read)
type AsyncInput = (Descriptor, AEvent)
data Descriptor
= LSocketDe LSocket
| SocketDe Socket
| OutputSocketDe Socket
| TimerDe Timer
| DisplayDe Display
deriving (Eq, Ord, Read, Show)
data AEvent
= SocketAccepted Socket Peer
| SocketRead String
| SocketWritable
| TimerAlarm
| XEvent (WindowId, XEvent)
deriving (Show,Read)
newtype DLHandle = DL DL deriving Show
instance Read DLHandle