aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/scala/spark/broadcast/SourceInfo.scala
blob: c79bb93c388b4195a5cbb63c186f245214bb9480 (plain) (blame)
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
37
package spark.broadcast

import java.util.BitSet

import spark._

/**
 * Used to keep and pass around information of peers involved in a broadcast
 */
private[spark] case class SourceInfo (hostAddress: String,
                       listenPort: Int,
                       totalBlocks: Int = SourceInfo.UnusedParam,
                       totalBytes: Int = SourceInfo.UnusedParam)
extends Comparable[SourceInfo] with Logging {

  var currentLeechers = 0
  var receptionFailed = false

  var hasBlocks = 0
  var hasBlocksBitVector: BitSet = new BitSet (totalBlocks)

  // Ascending sort based on leecher count
  def compareTo (o: SourceInfo): Int = (currentLeechers - o.currentLeechers)
}

/**
 * Helper Object of SourceInfo for its constants
 */
private[spark] object SourceInfo {
  // Broadcast has not started yet! Should never happen.
  val TxNotStartedRetry = -1
  // Broadcast has already finished. Try default mechanism.
  val TxOverGoToDefault = -3
  // Other constants
  val StopBroadcast = -2
  val UnusedParam = 0
}