]> git.rkrishnan.org Git - functorrent.git/blob - src/FuncTorrent/Tracker/Types.hs
tracker: refactor around Http and Udp (to be worked on) modules
[functorrent.git] / src / FuncTorrent / Tracker / Types.hs
1 {-# LANGUAGE OverloadedStrings #-}
2 module FuncTorrent.Tracker.Types
3        ( TrackerProtocol(..)
4        , TrackerResponse(..)
5        , TrackerEventState(..)
6        , TState(..)
7        , TrackerMsg(..)
8        , IP
9        , Port
10        ) where
11
12 import Control.Concurrent.MVar (MVar)
13
14 import FuncTorrent.Peer (Peer(..))
15
16 type IP = String
17 type Port = Integer
18
19 data TrackerProtocol = Http
20                      | Udp
21                      | UnknownProtocol
22                      deriving (Show)
23
24 data TrackerEventState = None
25                        | Started
26                        | Stopped
27                        | Completed
28                        deriving (Show, Eq)
29 data TrackerMsg = GetStatusMsg
30                 | GetConnectedPeersMsg (MVar [Peer])
31
32 data TState = TState { left :: Integer
33                      , currentState :: TrackerEventState
34                      , connectedPeers :: MVar [Peer]
35                      }
36
37 -- | Tracker response
38 data TrackerResponse = TrackerResponse {
39   interval :: Integer
40   , peers :: [Peer]
41   , complete :: Maybe Integer
42   , incomplete :: Maybe Integer
43   } deriving (Show, Eq)