@@ -21,21 +21,21 @@ type ModelConstraint struct {
21
21
type Capability int
22
22
type CapabilityString []uint64
23
23
type Constraints struct {
24
- minVersion string
24
+ minVersion string
25
+ perCapability PerCapabilityConstraints
25
26
}
26
- type PerCapabilityConstraints struct {
27
+ type CapabilityConstraints struct {
27
28
// Models contains a *ModelConstraint for each supported model ID
28
29
Models ModelConstraints
29
30
}
30
- type CapabilityConstraints map [Capability ]* PerCapabilityConstraints
31
+ type PerCapabilityConstraints map [Capability ]* CapabilityConstraints
31
32
type Capabilities struct {
32
- bitstring CapabilityString
33
- mandatories CapabilityString
34
- version string
35
- constraints Constraints
36
- capabilityConstraints CapabilityConstraints
37
- capacities map [Capability ]int
38
- mutex sync.Mutex
33
+ bitstring CapabilityString
34
+ mandatories CapabilityString
35
+ version string
36
+ constraints Constraints
37
+ capacities map [Capability ]int
38
+ mutex sync.Mutex
39
39
}
40
40
type CapabilityTest struct {
41
41
inVideoData []byte
@@ -239,7 +239,7 @@ func (c1 CapabilityString) CompatibleWith(c2 CapabilityString) bool {
239
239
return true
240
240
}
241
241
242
- func (c1 CapabilityConstraints ) CompatibleWith (c2 CapabilityConstraints ) bool {
242
+ func (c1 PerCapabilityConstraints ) CompatibleWith (c2 PerCapabilityConstraints ) bool {
243
243
for c1Cap , c1Constraints := range c1 {
244
244
c2Constraints , ok := c2 [c1Cap ]
245
245
if ! ok {
@@ -255,7 +255,7 @@ func (c1 CapabilityConstraints) CompatibleWith(c2 CapabilityConstraints) bool {
255
255
return true
256
256
}
257
257
258
- func (c1 * PerCapabilityConstraints ) CompatibleWith (c2 * PerCapabilityConstraints ) bool {
258
+ func (c1 * CapabilityConstraints ) CompatibleWith (c2 * CapabilityConstraints ) bool {
259
259
return c1 .Models .CompatibleWith (c2 .Models )
260
260
}
261
261
@@ -453,8 +453,8 @@ func (bcast *Capabilities) CompatibleWith(orch *net.Capabilities) bool {
453
453
return false
454
454
}
455
455
456
- orchCapabilityConstraints := CapabilitiesFromNetCapabilities (orch ).capabilityConstraints
457
- if ! bcast .capabilityConstraints .CompatibleWith (orchCapabilityConstraints ) {
456
+ orchCapabilityConstraints := CapabilitiesFromNetCapabilities (orch ).constraints . perCapability
457
+ if ! bcast .constraints . perCapability .CompatibleWith (orchCapabilityConstraints ) {
458
458
return false
459
459
}
460
460
@@ -467,19 +467,19 @@ func (c *Capabilities) ToNetCapabilities() *net.Capabilities {
467
467
}
468
468
c .mutex .Lock ()
469
469
defer c .mutex .Unlock ()
470
- netCaps := & net.Capabilities {Bitstring : c .bitstring , Mandatories : c .mandatories , Version : c .version , Capacities : make (map [uint32 ]uint32 ), Constraints : & net.Capabilities_Constraints {MinVersion : c .constraints .minVersion }, CapabilityConstraints : make (map [uint32 ]* net.Capabilities_CapabilityConstraints )}
470
+ netCaps := & net.Capabilities {Bitstring : c .bitstring , Mandatories : c .mandatories , Version : c .version , Capacities : make (map [uint32 ]uint32 ), Constraints : & net.Capabilities_Constraints {MinVersion : c .constraints .minVersion , PerCapability : make (map [uint32 ]* net.Capabilities_CapabilityConstraints )} }
471
471
for capability , capacity := range c .capacities {
472
472
netCaps .Capacities [uint32 (capability )] = uint32 (capacity )
473
473
}
474
- for capability , constraints := range c .capabilityConstraints {
474
+ for capability , constraints := range c .constraints . perCapability {
475
475
models := make (map [string ]* net.Capabilities_CapabilityConstraints_ModelConstraint )
476
476
for modelID , modelConstraint := range constraints .Models {
477
477
models [modelID ] = & net.Capabilities_CapabilityConstraints_ModelConstraint {
478
478
Warm : modelConstraint .Warm ,
479
479
}
480
480
}
481
481
482
- netCaps .CapabilityConstraints [uint32 (capability )] = & net.Capabilities_CapabilityConstraints {
482
+ netCaps .Constraints . PerCapability [uint32 (capability )] = & net.Capabilities_CapabilityConstraints {
483
483
Models : models ,
484
484
}
485
485
}
@@ -491,12 +491,11 @@ func CapabilitiesFromNetCapabilities(caps *net.Capabilities) *Capabilities {
491
491
return nil
492
492
}
493
493
coreCaps := & Capabilities {
494
- bitstring : caps .Bitstring ,
495
- mandatories : caps .Mandatories ,
496
- capacities : make (map [Capability ]int ),
497
- version : caps .Version ,
498
- constraints : Constraints {minVersion : caps .Constraints .GetMinVersion ()},
499
- capabilityConstraints : make (CapabilityConstraints ),
494
+ bitstring : caps .Bitstring ,
495
+ mandatories : caps .Mandatories ,
496
+ capacities : make (map [Capability ]int ),
497
+ version : caps .Version ,
498
+ constraints : Constraints {minVersion : caps .Constraints .GetMinVersion (), perCapability : make (PerCapabilityConstraints )},
500
499
}
501
500
if caps .Capacities == nil || len (caps .Capacities ) == 0 {
502
501
// build capacities map if not present (struct received from previous versions)
@@ -514,13 +513,13 @@ func CapabilitiesFromNetCapabilities(caps *net.Capabilities) *Capabilities {
514
513
}
515
514
}
516
515
517
- for capabilityInt , constraints := range caps .CapabilityConstraints {
516
+ for capabilityInt , constraints := range caps .Constraints . PerCapability {
518
517
models := make (map [string ]* ModelConstraint )
519
518
for modelID , modelConstraint := range constraints .Models {
520
519
models [modelID ] = & ModelConstraint {Warm : modelConstraint .Warm }
521
520
}
522
521
523
- coreCaps .capabilityConstraints [Capability (capabilityInt )] = & PerCapabilityConstraints {
522
+ coreCaps .constraints . perCapability [Capability (capabilityInt )] = & CapabilityConstraints {
524
523
Models : models ,
525
524
}
526
525
}
@@ -529,7 +528,7 @@ func CapabilitiesFromNetCapabilities(caps *net.Capabilities) *Capabilities {
529
528
}
530
529
531
530
func NewCapabilities (caps []Capability , m []Capability ) * Capabilities {
532
- c := & Capabilities {capacities : make (map [Capability ]int ), version : LivepeerVersion , capabilityConstraints : make (CapabilityConstraints ) }
531
+ c := & Capabilities {capacities : make (map [Capability ]int ), constraints : Constraints { perCapability : make (PerCapabilityConstraints )}, version : LivepeerVersion }
533
532
if len (caps ) > 0 {
534
533
c .bitstring = NewCapabilityString (caps )
535
534
// initialize capacities to 1 by default, mandatory capabilities doesn't have capacities
@@ -543,13 +542,6 @@ func NewCapabilities(caps []Capability, m []Capability) *Capabilities {
543
542
return c
544
543
}
545
544
546
- func NewCapabilitiesWithConstraints (caps []Capability , m []Capability , constraints Constraints , capabilityConstraints CapabilityConstraints ) * Capabilities {
547
- c := NewCapabilities (caps , m )
548
- c .constraints = constraints
549
- c .capabilityConstraints = capabilityConstraints
550
- return c
551
- }
552
-
553
545
func (cap * Capabilities ) AddCapacity (newCaps * Capabilities ) {
554
546
cap .mutex .Lock ()
555
547
defer cap .mutex .Unlock ()
@@ -723,6 +715,19 @@ func (bcast *Capabilities) LegacyOnly() bool {
723
715
return bcast .bitstring .CompatibleWith (legacyCapabilityString )
724
716
}
725
717
718
+ func (bcast * Capabilities ) SetPerCapabilityConstraints (constraints PerCapabilityConstraints ) {
719
+ if bcast != nil {
720
+ bcast .constraints .perCapability = constraints
721
+ }
722
+ }
723
+
724
+ func (bcast * Capabilities ) PerCapability () PerCapabilityConstraints {
725
+ if bcast != nil {
726
+ return bcast .constraints .perCapability
727
+ }
728
+ return nil
729
+ }
730
+
726
731
func (bcast * Capabilities ) SetMinVersionConstraint (minVersionConstraint string ) {
727
732
if bcast != nil {
728
733
bcast .constraints .minVersion = minVersionConstraint
0 commit comments