public void HandleSchemaChange(Frame frame) { var ce = new SchemaChangeEventArgs(); CassandraEventArgs = ce; var changeTypeText = Reader.ReadString(); SchemaChangeEventArgs.Reason changeType; switch (changeTypeText) { case "UPDATED": changeType = SchemaChangeEventArgs.Reason.Updated; break; case "DROPPED": changeType = SchemaChangeEventArgs.Reason.Dropped; break; default: changeType = SchemaChangeEventArgs.Reason.Created; break; } ce.What = changeType; if (frame.Header.Version < 3) { //protocol v1 and v2: <change_type><keyspace><table> ce.Keyspace = Reader.ReadString(); ce.Table = Reader.ReadString(); return; } //protocol v3+: <change_type><target><options> var target = Reader.ReadString(); ce.Keyspace = Reader.ReadString(); switch (target) { case "TABLE": ce.Table = Reader.ReadString(); break; case "TYPE": ce.Type = Reader.ReadString(); break; case "FUNCTION": ce.FunctionName = Reader.ReadString(); ce.Signature = Reader.ReadStringList(); break; case "AGGREGATE": ce.AggregateName = Reader.ReadString(); ce.Signature = Reader.ReadStringList(); break; } }
public static SchemaChangeEventArgs ParseSchemaChangeBody(ProtocolVersion protocolVersion, FrameReader reader) { var ce = new SchemaChangeEventArgs(); var changeTypeText = reader.ReadString(); SchemaChangeEventArgs.Reason changeType; switch (changeTypeText) { case "UPDATED": changeType = SchemaChangeEventArgs.Reason.Updated; break; case "DROPPED": changeType = SchemaChangeEventArgs.Reason.Dropped; break; default: changeType = SchemaChangeEventArgs.Reason.Created; break; } ce.What = changeType; if (!protocolVersion.SupportsSchemaChangeFullMetadata()) { //protocol v1 and v2: <change_type><keyspace><table> ce.Keyspace = reader.ReadString(); ce.Table = reader.ReadString(); return(ce); } //protocol v3+: <change_type><target><options> var target = reader.ReadString(); ce.Keyspace = reader.ReadString(); switch (target) { case "TABLE": ce.Table = reader.ReadString(); break; case "TYPE": ce.Type = reader.ReadString(); break; case "FUNCTION": ce.FunctionName = reader.ReadString(); ce.Signature = reader.ReadStringList(); break; case "AGGREGATE": ce.AggregateName = reader.ReadString(); ce.Signature = reader.ReadStringList(); break; } return(ce); }
internal EventResponse(ResponseFrame frame) : base(frame) { var eventTypeString = BEBinaryReader.ReadString(); if (eventTypeString == "TOPOLOGY_CHANGE") { var ce = new TopologyChangeEventArgs(); ce.What = BEBinaryReader.ReadString() == "NEW_NODE" ? TopologyChangeEventArgs.Reason.NewNode : TopologyChangeEventArgs.Reason.RemovedNode; ce.Address = BEBinaryReader.ReadInet().Address; CassandraEventArgs = ce; return; } else if (eventTypeString == "STATUS_CHANGE") { var ce = new StatusChangeEventArgs(); ce.What = BEBinaryReader.ReadString() == "UP" ? StatusChangeEventArgs.Reason.Up : StatusChangeEventArgs.Reason.Down; ce.Address = BEBinaryReader.ReadInet().Address; CassandraEventArgs = ce; return; } else if (eventTypeString == "SCHEMA_CHANGE") { var ce = new SchemaChangeEventArgs(); var m = BEBinaryReader.ReadString(); ce.What = m == "CREATED" ? SchemaChangeEventArgs.Reason.Created : (m == "UPDATED" ? SchemaChangeEventArgs.Reason.Updated : SchemaChangeEventArgs.Reason.Dropped); ce.Keyspace = BEBinaryReader.ReadString(); ce.Table = BEBinaryReader.ReadString(); CassandraEventArgs = ce; return; } var ex = new DriverInternalError("Unknown Event Type"); _logger.Error(ex); throw ex; }
internal EventResponse(ResponseFrame frame) : base(frame) { var eventTypeString = BEBinaryReader.ReadString(); if (eventTypeString == "TOPOLOGY_CHANGE") { var ce = new TopopogyChangeEventArgs(); ce.What = BEBinaryReader.ReadString() == "NEW_NODE" ? TopopogyChangeEventArgs.Reason.NewNode : TopopogyChangeEventArgs.Reason.RemovedNode; ce.Address = BEBinaryReader.ReadInet().Address; CassandraEventArgs = ce; return; } else if (eventTypeString == "STATUS_CHANGE") { var ce = new StatusChangeEventArgs(); ce.What = BEBinaryReader.ReadString() == "UP" ? StatusChangeEventArgs.Reason.Up : StatusChangeEventArgs.Reason.Down; ce.Address = BEBinaryReader.ReadInet().Address; CassandraEventArgs = ce; return; } else if (eventTypeString == "SCHEMA_CHANGE") { var ce = new SchemaChangeEventArgs(); var m = BEBinaryReader.ReadString(); ce.What = m == "CREATED" ? SchemaChangeEventArgs.Reason.Created : (m == "UPDATED" ? SchemaChangeEventArgs.Reason.Updated : SchemaChangeEventArgs.Reason.Dropped); ce.Keyspace = BEBinaryReader.ReadString(); ce.Table = BEBinaryReader.ReadString(); CassandraEventArgs = ce; return; } var ex = new DriverInternalError("Unknown Event Type"); _logger.Error(ex); throw ex; }
public void HandleSchemaChange(ResponseFrame frame) { var ce = new SchemaChangeEventArgs(); string m = BeBinaryReader.ReadString(); ce.What = m == "CREATED" ? SchemaChangeEventArgs.Reason.Created : (m == "UPDATED" ? SchemaChangeEventArgs.Reason.Updated : SchemaChangeEventArgs.Reason.Dropped); if (frame.Header.Version < 3) { //protocol v1 and v2: <change_type><keyspace><table> ce.Keyspace = BeBinaryReader.ReadString(); ce.Table = BeBinaryReader.ReadString(); } else { //protocol v3: <change_type><target><options> var target = BeBinaryReader.ReadString(); switch (target) { case "KEYSPACE": ce.Keyspace = BeBinaryReader.ReadString(); break; case "TABLE": ce.Keyspace = BeBinaryReader.ReadString(); ce.Table = BeBinaryReader.ReadString(); break; case "TYPE": ce.Keyspace = BeBinaryReader.ReadString(); ce.Type = BeBinaryReader.ReadString(); break; } } CassandraEventArgs = ce; }