Пример #1
0
        public void HandleSchemaChange(ResponseFrame frame)
        {
            var ce = new SchemaChangeEventArgs();

            CassandraEventArgs = ce;
            var changeTypeText = BeBinaryReader.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 = BeBinaryReader.ReadString();
                ce.Table    = BeBinaryReader.ReadString();
                return;
            }
            //protocol v3+: <change_type><target><options>
            var target = BeBinaryReader.ReadString();

            ce.Keyspace = BeBinaryReader.ReadString();
            switch (target)
            {
            case "TABLE":
                ce.Table = BeBinaryReader.ReadString();
                break;

            case "TYPE":
                ce.Type = BeBinaryReader.ReadString();
                break;

            case "FUNCTION":
                ce.FunctionName = BeBinaryReader.ReadString();
                ce.Signature    = BeBinaryReader.ReadStringList();
                break;

            case "AGGREGATE":
                ce.AggregateName = BeBinaryReader.ReadString();
                ce.Signature     = BeBinaryReader.ReadStringList();
                break;
            }
        }
Пример #2
0
        internal ResultResponse(ResponseFrame frame) : base(frame)
        {
            //Handle result flags
            if ((frame.Header.Flags & FrameHeader.HeaderFlag.Warning) != 0)
            {
                Warnings = BeBinaryReader.ReadStringList();
            }
            if ((frame.Header.Flags & FrameHeader.HeaderFlag.CustomPayload) != 0)
            {
                CustomPayload = BeBinaryReader.ReadBytesMap();
            }

            Kind = (ResultResponseKind)BeBinaryReader.ReadInt32();
            switch (Kind)
            {
            case ResultResponseKind.Void:
                Output = new OutputVoid(TraceId);
                break;

            case ResultResponseKind.Rows:
                Output = new OutputRows(frame.Header.Version, BeBinaryReader, TraceId);
                break;

            case ResultResponseKind.SetKeyspace:
                Output = new OutputSetKeyspace(BeBinaryReader.ReadString());
                break;

            case ResultResponseKind.Prepared:
                Output = new OutputPrepared(frame.Header.Version, BeBinaryReader);
                break;

            case ResultResponseKind.SchemaChange:
                Output = new OutputSchemaChange(BeBinaryReader, TraceId);
                break;

            default:
                throw new DriverInternalError("Unknown ResultResponseKind Type");
            }
        }