public bool Match(Tuple tuple) { // if there are more required tuple members than they exist, return false if (tuple.GetSize() != Schema.GetSize()) { return(false); } for (var i = 0; i < Schema.GetSize(); i++) { var schemaField = Schema.Fields[i]; var tupleField = tuple.Fields[i]; // check string match if (tupleField is string && Regex.IsMatch(tupleField.ToString(), WildCardToRegular(schemaField.ToString()))) { return(true); } // check for object match if (schemaField == null || tupleField.Equals(schemaField)) { return(true); } if (schemaField is string && tupleField.GetType().Name.Equals(schemaField)) { return(true); } } return(false); }
public void Write(Tuple tuple) { lock (_tupleSpaceLocks.GetOrAdd(tuple.GetSize(), new object())) { _tupleSpace.AddOrUpdate(tuple.GetSize(), valueToAdd => new List <Tuple> { tuple }, (key, oldValue) => new List <Tuple>(oldValue) { tuple } ); } }