-}
{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE DuplicateRecordFields #-}
module FuncTorrent.Tracker.Types
( TrackerProtocol(..)
- , TrackerResponse(..)
+ , HttpTrackerResponse(..)
+ , UdpTrackerResponse(..)
, TrackerEventState(..)
, TState(..)
, TrackerMsg(..)
) where
import Data.ByteString (ByteString)
+import Data.Word (Word32)
import Control.Concurrent.MVar (MVar)
-import FuncTorrent.Peer (Peer(..))
+import FuncTorrent.PeerMsgs (Peer)
data TrackerProtocol = Http
| Udp
data TrackerEventState = None
| Started
| Completed
- | Error ByteString
+ | Stopped
deriving (Show, Eq)
data TrackerMsg = GetStatusMsg TrackerEventState
}
-- | Tracker response
-data TrackerResponse = TrackerResponse {
+data HttpTrackerResponse = HttpTrackerResponse {
interval :: Integer
, peers :: [Peer]
, complete :: Maybe Integer
, incomplete :: Maybe Integer
} deriving (Show, Eq)
+
+data UdpTrackerResponse = UdpTrackerResponse {
+ leechers :: Word32
+ , seeders :: Word32
+ , interval :: Word32
+ , peers :: [Peer]
+ } deriving (Show)