]> git.rkrishnan.org Git - functorrent.git/blob - src/FuncTorrent/Tracker/Types.hs
Tracker: refactor into http, udp and types 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        , IP
8        , Port
9        ) where
10
11 import Control.Concurrent.MVar (MVar)
12
13 import FuncTorrent.Peer (Peer(..))
14
15 type IP = String
16 type Port = Integer
17
18 data TrackerProtocol = Http
19                      | Udp
20                      | UnknownProtocol
21                      deriving (Show)
22
23 data TrackerEventState = None
24                        | Started
25                        | Stopped
26                        | Completed
27                        deriving (Show, Eq)
28
29 data TState = TState {
30     uploaded :: MVar Integer
31   , downloaded :: MVar Integer
32   , 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)