MCPcopy
hub / github.com/tinode/chat / ParseAcs

Function ParseAcs

server/store/types/types.go:606–640  ·  view source on GitHub ↗

ParseAcs parses AccessMode from a byte array.

(b []byte)

Source from the content-addressed store, hash-verified

604
605// ParseAcs parses AccessMode from a byte array.
606func ParseAcs(b []byte) (AccessMode, error) {
607 m0 := ModeUnset
608
609Loop:
610 for i := range b {
611 switch b[i] {
612 case 'J', 'j':
613 m0 |= ModeJoin
614 case 'R', 'r':
615 m0 |= ModeRead
616 case 'W', 'w':
617 m0 |= ModeWrite
618 case 'A', 'a':
619 m0 |= ModeApprove
620 case 'S', 's':
621 m0 |= ModeShare
622 case 'D', 'd':
623 m0 |= ModeDelete
624 case 'P', 'p':
625 m0 |= ModePres
626 case 'O', 'o':
627 m0 |= ModeOwner
628 case 'N', 'n':
629 if m0 != ModeUnset {
630 return ModeUnset, errors.New("AccessMode: access N cannot be combined with any other")
631 }
632 m0 = ModeNone // N means explicitly no access, all bits cleared
633 break Loop
634 default:
635 return ModeUnset, errors.New("AccessMode: invalid character '" + string(b[i]) + "'")
636 }
637 }
638
639 return m0, nil
640}
641
642// UnmarshalText parses access mode string as byte slice.
643// Does not change the mode if the string is empty or invalid.

Callers 4

subscriptionReplyMethod · 0.92
UnmarshalTextMethod · 0.85
ApplyDeltaMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…