]> git.rkrishnan.org Git - functorrent.git/blobdiff - src/FuncTorrent/Tracker/Types.hs
Tracker: refactor into http, udp and types modules
[functorrent.git] / src / FuncTorrent / Tracker / Types.hs
diff --git a/src/FuncTorrent/Tracker/Types.hs b/src/FuncTorrent/Tracker/Types.hs
new file mode 100644 (file)
index 0000000..6ca5ddb
--- /dev/null
@@ -0,0 +1,43 @@
+{-# LANGUAGE OverloadedStrings #-}
+module FuncTorrent.Tracker.Types
+       ( TrackerProtocol(..)
+       , TrackerResponse(..)
+       , TrackerEventState(..)
+       , TState(..)
+       , IP
+       , Port
+       ) where
+
+import Control.Concurrent.MVar (MVar)
+
+import FuncTorrent.Peer (Peer(..))
+
+type IP = String
+type Port = Integer
+
+data TrackerProtocol = Http
+                     | Udp
+                     | UnknownProtocol
+                     deriving (Show)
+
+data TrackerEventState = None
+                       | Started
+                       | Stopped
+                       | Completed
+                       deriving (Show, Eq)
+
+data TState = TState {
+    uploaded :: MVar Integer
+  , downloaded :: MVar Integer
+  , left :: Integer
+  , currentState :: TrackerEventState
+  , connectedPeers :: MVar [Peer]
+  }
+
+-- | Tracker response
+data TrackerResponse = TrackerResponse {
+  interval :: Integer
+  , peers :: [Peer]
+  , complete :: Maybe Integer
+  , incomplete :: Maybe Integer
+  } deriving (Show, Eq)