Beispiel #1
0
        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);
        }
Beispiel #2
0
 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
         }
                                 );
     }
 }