summaryrefslogtreecommitdiff
path: root/Assistant/Types/NetMessager.hs
blob: 79342b6667919a4a1dd3dfbd28639f52d857ece4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{- git-annex assistant out of band network messager types
 -
 - Copyright 2012 Joey Hess <joey@kitenet.net>
 -
 - Licensed under the GNU GPL version 3 or higher.
 -}

module Assistant.Types.NetMessager where

import Common.Annex
import Assistant.Pairing

import Data.Text (Text)
import Control.Concurrent.STM
import Control.Concurrent.MSampleVar

{- Messages that can be sent out of band by a network messager. -}
data NetMessage 
	-- indicate that pushes have been made to the repos with these uuids
	= NotifyPush [UUID]
	-- requests other clients to inform us of their presence
	| QueryPresence
	-- notification about a stage in the pairing process,
	-- involving another client identified by the Text, and a UUID.
	| PairingNotification PairStage Text UUID
	deriving (Show)

data NetMessagerControl = NetMessagerControl
	{ netMessages :: TChan (NetMessage)
	, netMessagerRestart :: MSampleVar ()
	}

newNetMessagerControl :: IO NetMessagerControl
newNetMessagerControl = NetMessagerControl
	<$> atomically newTChan
	<*> newEmptySV