ソースを参照

Message

- add bitmap helpers
Alexey Kim 1 年間 前
コミット
5570de09a6
1 ファイル変更33 行追加0 行削除
  1. 33 0
      v2/message.go

+ 33 - 0
v2/message.go

@@ -2,6 +2,7 @@ package ticket
 
 import (
 	"github.com/ClickHouse/clickhouse-go/v2/lib/driver"
+	"github.com/kelindar/bitmap"
 	"google.golang.org/protobuf/types/known/timestamppb"
 	"time"
 )
@@ -52,3 +53,35 @@ func (x *Message) Scan(row driver.Rows) error {
 
 	return nil
 }
+
+func (x *Message) SetFlags(flags ...MessageFlag) {
+	mask := bitmap.FromBytes(x.Flags)
+	for i := range flags {
+		if MessageFlag_unknown_message_flag == flags[i] {
+			continue
+		}
+
+		mask.Set(uint32(flags[i]))
+	}
+
+	x.Flags = mask.ToBytes()
+}
+
+func (x *Message) RemoveFlags(flags ...MessageFlag) {
+	mask := bitmap.FromBytes(x.Flags)
+	for i := range flags {
+		if MessageFlag_unknown_message_flag == flags[i] {
+			continue
+		}
+
+		mask.Remove(uint32(flags[i]))
+	}
+
+	x.Flags = mask.ToBytes()
+}
+
+func (x *Message) HasFlag(flag MessageFlag) bool {
+	return bitmap.
+		FromBytes(x.Flags).
+		Contains(uint32(flag))
+}