public IQueryCondition CreateQueryCondition( SampleStateKind sampleStates, ViewStateKind viewStates, InstanceStateKind instanceStates, string queryExpression, params string[] queryParameters) { IQueryCondition queryCondition = null; using (SequenceStringMarshaler marshaler = new SequenceStringMarshaler()) { if (marshaler.CopyIn(queryParameters) == DDS.ReturnCode.Ok) { IntPtr gapiPtr = Gapi.DataReader.create_querycondition( GapiPeer, sampleStates, viewStates, instanceStates, queryExpression, marshaler.GapiPtr); if (gapiPtr != IntPtr.Zero) { queryCondition = new QueryCondition(gapiPtr); } } } return queryCondition; }
public IQueryCondition CreateQueryCondition( SampleStateKind sampleStates, ViewStateKind viewStates, InstanceStateKind instanceStates, string queryExpression, params string[] queryParameters) { QueryCondition queryCondition = null; ReturnCode result = DDS.ReturnCode.AlreadyDeleted; IntPtr uQuery; ReportStack.Start(); lock (this) { if (this.rlReq_isAlive) { using (SequenceStringToArrMarshaler marshaler = new SequenceStringToArrMarshaler()) { result = marshaler.CopyIn(queryParameters); if (result == ReturnCode.Ok) { if (SampleStateMaskIsValid(sampleStates) && ViewStateMaskIsValid(viewStates) && InstanceStateMaskIsValid(instanceStates)) { uint stateMask = StateMask(sampleStates, viewStates, instanceStates); uQuery = User.Query.New( rlReq_UserPeer, null, queryExpression, marshaler.UserPtr, queryParameters != null ? (uint)queryParameters.Length : 0, stateMask); if (uQuery != IntPtr.Zero) { queryCondition = new QueryCondition( this, sampleStates, viewStates, instanceStates, queryExpression, queryParameters); result = queryCondition.init(uQuery); if (result == ReturnCode.Ok) { conditionList.Add(queryCondition); } else { ReportStack.Report(result, "Could not create QueryCondition."); queryCondition = null; } } else { result = DDS.ReturnCode.Error; ReportStack.Report(result, "Unable to create QueryCondition in kernel."); } } else { result = DDS.ReturnCode.BadParameter; ReportStack.Report(result, "One mor more of your SampleState/ViewState/InstanceState masks are invalid."); } } } } } ReportStack.Flush(this, result != ReturnCode.Ok); return(queryCondition); }