summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Trader/Property_Filter.h
blob: efdc335c71ca3d65650ff8b71eda3ccae6725e73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* -*- C++ -*- */

// ========================================================================
// $Id$
// 
// = LIBRARY 
//    orbsvcs
//  
// = FILENAME 
//    Property_Filter.h
// 
// = AUTHOR 
//    Seth Widoff <sbw1@cs.wustl.edu>
// 
// ======================================================================= 

#ifndef TAO_PROPERTY_FILTER_H
#define TAO_PROPERTY_FILTER_H

#include <set>
#include <deque>

#include "Trader_Base.h"

class TAO_Property_Filter
// = TITLE
//
//   The Ace_Property_Filter copies those properties specified in a
//   CosTrading::Lookup::SpecifiedProps from a source
//   CosTrading::Offer to a destination CosTrading::Offer. 
{
public:

  typedef CosTrading::Lookup::SpecifiedProps SPECIFIED_PROPS;
  
  TAO_Property_Filter (const SPECIFIED_PROPS& desired_props,
		       CORBA::Environment& env)
    TAO_THROW_SPEC ((CosTrading::IllegalPropertyName,
		     CosTrading::DuplicatePropertyName));
  // Verify that the specified properties are correct.

  TAO_Property_Filter (const TAO_Property_Filter& prop_filter);

  void filter_offer (CosTrading::Offer& source,
		     CosTrading::Offer& destination);
  // Copy the desired properties from the source offer to the
  // destination offer.
  
private:

  typedef set< string,  less <string> > PROP_NAMES;
  typedef deque< CosTrading::Property* > PROP_QUEUE;
  
  int verify_property_name (const char* name);

  PROP_NAMES props_;
  CosTrading::Lookup::HowManyProps policy_;
};

#endif /* TAO_PROPERTY_FILTER_H */