forked from cwtch.im/cwtch
Adding Attributes to Groups
This commit is contained in:
parent
3b9058c4ed
commit
ae84893d78
|
@ -26,6 +26,7 @@ type Group struct {
|
|||
Owner string
|
||||
IsCompromised bool
|
||||
InitialMessage []byte
|
||||
Attributes map[string]string
|
||||
lock sync.Mutex
|
||||
NewMessage chan Message `json:"-"`
|
||||
}
|
||||
|
@ -49,6 +50,7 @@ func NewGroup(server string) (*Group, error) {
|
|||
}
|
||||
copy(group.GroupKey[:], groupKey[:])
|
||||
group.Owner = "self"
|
||||
group.Attributes = make(map[string]string)
|
||||
return group, nil
|
||||
}
|
||||
|
||||
|
@ -152,3 +154,18 @@ func (g *Group) DecryptMessage(ciphertext []byte) (bool, *protocol.DecryptedGrou
|
|||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
// SetAttribute allows applications to store arbitrary configuration info at the group level.
|
||||
func (g *Group) SetAttribute(name string, value string) {
|
||||
g.lock.Lock()
|
||||
defer g.lock.Unlock()
|
||||
g.Attributes[name] = value
|
||||
}
|
||||
|
||||
// GetAttribute returns the value of a value set with SetAttribute. If no such value has been set exists is set to false.
|
||||
func (g *Group) GetAttribute(name string) (value string, exists bool) {
|
||||
g.lock.Lock()
|
||||
defer g.lock.Unlock()
|
||||
value, exists = g.Attributes[name]
|
||||
return
|
||||
}
|
||||
|
|
|
@ -23,5 +23,10 @@ func TestGroup(t *testing.T) {
|
|||
t.Errorf("group encryption was invalid, or returned wrong message decrypted:%v message:%v", ok, message)
|
||||
return
|
||||
}
|
||||
g.SetAttribute("test", "test_value")
|
||||
value, exists := g.GetAttribute("test")
|
||||
if !exists || value != "test_value" {
|
||||
t.Errorf("Custom Attribute Should have been set, instead %v %v", exists, value)
|
||||
}
|
||||
t.Logf("Got message %v", message)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue