@@ -21,15 +21,9 @@ public class IBCHost extends IBCStore {
21
21
*
22
22
*/
23
23
public void claimCapability (byte [] name , Address addr ) {
24
- ArrayDB <Address > capability = capabilities .at (name );
25
- int capabilitiesCount = capability .size ();
26
- if (capabilitiesCount == 0 ) {
27
- portIds .add (name );
28
- }
29
- for (int i = 0 ; i < capabilitiesCount ; i ++) {
30
- Context .require (!capability .get (i ).equals (addr ), TAG + "Capability already claimed" );
31
- }
32
- capability .add (addr );
24
+ Context .require (capabilities .get (name ) == null , TAG + "Capability already claimed" );
25
+ portIds .add (name );
26
+ capabilities .set (name , addr );
33
27
}
34
28
35
29
/**
@@ -42,14 +36,7 @@ public void claimCapability(byte[] name, Address addr) {
42
36
*/
43
37
public boolean authenticateCapability (byte [] name ) {
44
38
Address caller = Context .getCaller ();
45
- ArrayDB <Address > capability = capabilities .at (name );
46
- int capabilitiesCount = capability .size ();
47
- for (int i = 0 ; i < capabilitiesCount ; i ++) {
48
- if (capability .get (i ).equals (caller )) {
49
- return Boolean .TRUE ;
50
- }
51
- }
52
- return Boolean .FALSE ;
39
+ return caller .equals (capabilities .get (name ));
53
40
}
54
41
55
42
/**
@@ -58,10 +45,10 @@ public boolean authenticateCapability(byte[] name) {
58
45
* @param name Name of the capability
59
46
* @return ArrayDB of addresses having the capability
60
47
*/
61
- public ArrayDB < Address > lookupModules (byte [] name ) {
62
- ArrayDB < Address > modules = capabilities .at (name );
63
- Context .require (modules . size () > 0 , "Module not found" );
64
- return modules ;
48
+ public Address lookupModules (byte [] name ) {
49
+ Address module = capabilities .get (name );
50
+ Context .require (module != null , "Module not found" );
51
+ return module ;
65
52
}
66
53
67
54
/**
0 commit comments