- return s.CloseDB()
-}
-
-func (s *SdlInstance) checkChannelsAndEvents(cmd string, channelsAndEvents []string) error {
- if len(channelsAndEvents)%2 != 0 {
- return fmt.Errorf("%s: Channels and events must be given as pairs", cmd)
- }
- for i, v := range channelsAndEvents {
- if i%2 != 0 {
- if strings.Contains(v, s.eventSeparator) {
- return fmt.Errorf("%s: event %s contains illegal substring (\"%s\")", cmd, v, s.eventSeparator)
- }
- }
- }
- return nil
-}
-func (s *SdlInstance) setNamespaceToChannels(channels ...string) []string {
- var retVal []string
- for _, v := range channels {
- retVal = append(retVal, s.nsPrefix+v)
- }
- return retVal
-}
-
-func (s *SdlInstance) setNamespaceToKeys(pairs ...interface{}) ([]interface{}, error) {
- retVal := make([]interface{}, 0)
- shouldBeKey := true
- for _, v := range pairs {
- reflectType := reflect.TypeOf(v)
- switch reflectType.Kind() {
- case reflect.Map:
- x := reflect.ValueOf(v).MapRange()
- for x.Next() {
- retVal = append(retVal, s.nsPrefix+x.Key().Interface().(string))
- retVal = append(retVal, x.Value().Interface())
- }
- case reflect.Slice:
- if shouldBeKey {
- x := reflect.ValueOf(v)
- if x.Len()%2 != 0 {
- return []interface{}{}, errors.New("Key/value pairs doesn't match")
- }
- for i2 := 0; i2 < x.Len(); i2++ {
- if i2%2 == 0 {
- retVal = append(retVal, s.nsPrefix+x.Index(i2).Interface().(string))
- } else {
- retVal = append(retVal, x.Index(i2).Interface())
- }
- }
- } else {
- if reflectType.Elem().Kind() == reflect.Uint8 {
- retVal = append(retVal, v)
- shouldBeKey = true
- } else {
- return []interface{}{}, errors.New("Key/value pairs doesn't match")
- }
- }
- case reflect.Array:
- if shouldBeKey {
- x := reflect.ValueOf(v)
- if x.Len()%2 != 0 {
- return []interface{}{}, errors.New("Key/value pairs doesn't match")
- }
- for i2 := 0; i2 < x.Len(); i2++ {
- if i2%2 == 0 {
- retVal = append(retVal, s.nsPrefix+x.Index(i2).Interface().(string))
- } else {
- retVal = append(retVal, x.Index(i2).Interface())
- }
- }
- } else {
- if reflectType.Elem().Kind() == reflect.Uint8 {
- retVal = append(retVal, v)
- shouldBeKey = true
- } else {
- return []interface{}{}, errors.New("Key/value pairs doesn't match")
- }
- }
- default:
- if shouldBeKey {
- retVal = append(retVal, s.nsPrefix+v.(string))
- shouldBeKey = false
- } else {
- retVal = append(retVal, v)
- shouldBeKey = true
- }
- }
- }
- if len(retVal)%2 != 0 {
- return []interface{}{}, errors.New("Key/value pairs doesn't match")
- }
- return retVal, nil
-}
-
-func (s *SdlInstance) prepareChannelsAndEvents(channelsAndEvents []string) []string {
- channelEventMap := make(map[string]string)
- for i, v := range channelsAndEvents {
- if i%2 != 0 {
- continue
- }
- _, exists := channelEventMap[v]
- if exists {
- channelEventMap[v] = channelEventMap[v] + s.eventSeparator + channelsAndEvents[i+1]
- } else {
- channelEventMap[v] = channelsAndEvents[i+1]
- }
- }
- retVal := make([]string, 0)
- for k, v := range channelEventMap {
- retVal = append(retVal, s.nsPrefix+k)
- retVal = append(retVal, v)
- }
- return retVal