浏览代码

Update startup message to match apache/cassandra@f1711794cf911c349a3b60e0104064adb8124148

Jonathan Rudenberg 13 年之前
父节点
当前提交
451ef502e1
共有 1 个文件被更改,包括 16 次插入4 次删除
  1. 16 4
      gocql.go

+ 16 - 4
gocql.go

@@ -57,6 +57,9 @@ const (
 	opExecute      byte = 0x0A
 
 	flagCompressed byte = 0x01
+
+	keyVersion  string = "CQL_VERSION"
+	keyCompression string = "COMPRESSION"
 )
 
 var rnd = rand.New(rand.NewSource(0))
@@ -111,16 +114,25 @@ func Open(name string) (*connection, error) {
 	cn := &connection{c: c, compression: compression}
 
 	b := &bytes.Buffer{}
+
+	if compression != "" {
+		binary.Write(b, binary.BigEndian, uint16(2))
+	} else {
+		binary.Write(b, binary.BigEndian, uint16(1))
+	}
+
+	binary.Write(b, binary.BigEndian, uint16(len(keyVersion)))
+	b.WriteString(keyVersion)
 	binary.Write(b, binary.BigEndian, uint16(len(version)))
 	b.WriteString(version)
+
 	if compression != "" {
-		binary.Write(b, binary.BigEndian, uint16(1))
-		binary.Write(b, binary.BigEndian, uint16(1))
+		binary.Write(b, binary.BigEndian, uint16(len(keyCompression)))
+		b.WriteString(keyCompression)
 		binary.Write(b, binary.BigEndian, uint16(len(compression)))
 		b.WriteString(compression)
-	} else {
-		binary.Write(b, binary.BigEndian, uint16(0))
 	}
+
 	if err := cn.send(opStartup, b.Bytes()); err != nil {
 		return nil, err
 	}