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;
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
 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;
     }
 }
Пример #4
0
        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;
        }
Пример #5
0
        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;
        }
Пример #6
0
        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;
        }
Пример #7
0
 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;
 }