summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Trader/Link.h
blob: cf8d8afb06c10206776b7c3c3ef9811ce42842c2 (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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/* -*- C++ -*- */

// ========================================================================
// $Id$
// 
// = LIBRARY
//    orbsvcs
// 
// = FILENAME
//   Link.h
//
// = AUTHOR
//    Marina Spivak <marina@cs.wustl.edu>,
//    Irfan Pyarali <irfan@cs.wustl.edu>,
//    Seth Widoff <sbw1@cs.wustl.edu>
// 
// ========================================================================

#ifndef TAO_LINK_H
#define TAO_LINK_H

#include "CosTradingS.h"

template <class TRADER>
class TAO_Link : public POA_CosTrading::Link
{
public:

  TAO_Link (const TRADER &trader);

  ~TAO_Link (void);
		
  virtual void add_link (const char *name, 
			 CosTrading::Lookup_ptr target, 
			 CosTrading::FollowOption def_pass_on_follow_rule, 
			 CosTrading::FollowOption limiting_follow_rule,
			 CORBA::Environment& _env) 
    TAO_THROW_SPEC (CORBA::SystemException,
		    CosTrading::Link::IllegalLinkName, 
		    CosTrading::Link::DuplicateLinkName, 
		    CosTrading::InvalidLookupRef, 
		    CosTrading::Link::DefaultFollowTooPermissive, 
		    CosTrading::Link::LimitingFollowTooPermissive);

  virtual void remove_link (const char *name,
			    CORBA::Environment& _env) 
    TAO_THROW_SPEC (CORBA::SystemException,
		    CosTrading::Link::IllegalLinkName, 
		    CosTrading::Link::UnknownLinkName);

  virtual CosTrading::Link::LinkInfo* describe_link (const char *name,
						     CORBA::Environment&) 
    TAO_THROW_SPEC (CORBA::SystemException, 
		    CosTrading::Link::IllegalLinkName, 
		    CosTrading::Link::UnknownLinkName);

  virtual CosTrading::LinkNameSeq* list_links (CORBA::Environment& _env)
    TAO_THROW_SPEC (CORBA::SystemException);

  virtual void modify_link (const char *name, 
			    CosTrading::FollowOption def_pass_on_follow_rule, 
			    CosTrading::FollowOption limiting_follow_rule,
			    CORBA::Environment& _env) 
    TAO_THROW_SPEC (CosTrading::Link::IllegalLinkName, 
		    CosTrading::Link::UnknownLinkName, 
		    CosTrading::Link::DefaultFollowTooPermissive, 
		    CosTrading::Link::LimitingFollowTooPermissive);

   // = CosTrading::TraderComponents methods. 

  virtual CosTrading::Lookup_ptr lookup_if (CORBA::Environment& _env)
      TAO_THROW_SPEC (CORBA::SystemException);
  // Returns an object reference to the Lookup interface of the trader.
  // Returns nil if the trader does not support Lookup interface.
  
  virtual CosTrading::Register_ptr register_if (CORBA::Environment& _env)
      TAO_THROW_SPEC (CORBA::SystemException);
  // Returns object reference for the Register interface of the trader.
  // Returns nil if the trader does not support Register interface.
  
  virtual CosTrading::Link_ptr link_if (CORBA::Environment& _env)
      TAO_THROW_SPEC (CORBA::SystemException);
  // Returns object reference for the Link interface of the trader.
  // Returns nil if the trader does not support Link interface.

  virtual CosTrading::Proxy_ptr proxy_if (CORBA::Environment& _env) 
      TAO_THROW_SPEC (CORBA::SystemException);
  // Returns object reference to the Proxy interface of the trader.
  // Returns nil if the trader does not support Proxy interface. 
  
  virtual CosTrading::Admin_ptr admin_if (CORBA::Environment& _env) 
      TAO_THROW_SPEC (CORBA::SystemException);
  // Returns object reference for the Admin interface of the trader.
  // Returns nil if the trader does not support Admin interface.
		
  // = CosTrading::SupportAttributes methods.

  virtual CORBA::Boolean supports_modifiable_properties (CORBA::Environment& _env) 
    TAO_THROW_SPEC (CORBA::SystemException);
    
  virtual CORBA::Boolean supports_dynamic_properties (CORBA::Environment& _env) 
    TAO_THROW_SPEC (CORBA::SystemException);
    
  virtual CORBA::Boolean supports_proxy_offers (CORBA::Environment& _env) 
    TAO_THROW_SPEC (CORBA::SystemException);
    
  virtual CosTrading::TypeRepository_ptr type_repos (CORBA::Environment& _env) 
    TAO_THROW_SPEC (CORBA::SystemException);

  // = CosTrading::LinkAttributes methods.
  
  virtual CosTrading::FollowOption max_link_follow_policy (CORBA::Environment& _env)
    TAO_THROW_SPEC (CORBA::SystemException);

private:
  TRADER &trader_;
};

#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
#include "Link.cpp"
#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */

#endif /* TAO_LINK_H */