internal static T Expect <T>(IBackendMessage msg, NpgsqlConnector connector) { if (msg is T asT) { return(asT); } connector.Break(); throw new NpgsqlException($"Received backend message {msg.Code} while expecting {typeof(T).Name}. Please file a bug."); }
bool ProcessMessageForUnprepared(IBackendMessage msg, CommandBehavior behavior) { Contract.Requires(!IsPrepared); switch (msg.Code) { case BackendMessageCode.CompletedResponse: // e.g. begin transaction case BackendMessageCode.ParseComplete: case BackendMessageCode.ParameterDescription: return(false); case BackendMessageCode.RowDescription: Contract.Assert(_queryIndex < _queries.Count); var description = (RowDescriptionMessage)msg; FixupRowDescription(description, _queryIndex == 0); _queries[_queryIndex].Description = description; if ((behavior & CommandBehavior.SchemaOnly) != 0) { _queryIndex++; } return(false); case BackendMessageCode.NoData: Contract.Assert(_queryIndex < _queries.Count); _queries[_queryIndex].Description = null; return(false); case BackendMessageCode.BindComplete: Contract.Assume((behavior & CommandBehavior.SchemaOnly) == 0); return(++_queryIndex == _queries.Count); case BackendMessageCode.ReadyForQuery: Contract.Assume((behavior & CommandBehavior.SchemaOnly) != 0); return(true); // End of a SchemaOnly command default: throw _connector.UnexpectedMessageReceived(msg.Code); } }
bool ProcessMessageForUnprepared(IBackendMessage msg, CommandBehavior behavior) { Contract.Requires(!IsPrepared); switch (msg.Code) { case BackendMessageCode.CompletedResponse: // e.g. begin transaction case BackendMessageCode.ParseComplete: case BackendMessageCode.ParameterDescription: return false; case BackendMessageCode.RowDescription: Contract.Assert(_queryIndex < _queries.Count); var description = (RowDescriptionMessage)msg; FixupRowDescription(description, _queryIndex == 0); _queries[_queryIndex].Description = description; if ((behavior & CommandBehavior.SchemaOnly) != 0) { _queryIndex++; } return false; case BackendMessageCode.NoData: Contract.Assert(_queryIndex < _queries.Count); _queries[_queryIndex].Description = null; return false; case BackendMessageCode.BindComplete: Contract.Assume((behavior & CommandBehavior.SchemaOnly) == 0); return ++_queryIndex == _queries.Count; case BackendMessageCode.ReadyForQuery: Contract.Assume((behavior & CommandBehavior.SchemaOnly) != 0); return true; // End of a SchemaOnly command default: throw _connector.UnexpectedMessageReceived(msg.Code); } }
internal static T Expect <T>(IBackendMessage msg) => msg is T asT