~ubuntu-branches/ubuntu/breezy/ace/breezy

« back to all changes in this revision

Viewing changes to ace/RMCast/RMCast_Proxy.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad, Benjamin Montgomery, Adam Conrad
  • Date: 2005-09-18 22:51:38 UTC
  • mfrom: (1.2.1 upstream) (2.1.1 sarge) (0.1.2 woody)
  • Revision ID: james.westby@ubuntu.com-20050918225138-seav22q6fyylb536
Tags: 5.4.7-3ubuntu1
[ Benjamin Montgomery ]
* Added a patch for amd64 and powerpc that disables the compiler
  option -fvisibility-inlines-hidden

[ Adam Conrad ]
* Added DPATCH_OPTION_CPP=1 to debian/patches/00options to make
  Benjamin's above changes work correctly with dpatch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* -*- C++ -*- */
2
 
// RMCast_Proxy.h,v 1.5 2003/07/19 19:04:15 dhinton Exp
3
 
 
4
 
// ============================================================================
5
 
//
6
 
// = LIBRARY
7
 
//    ace
8
 
//
9
 
// = FILENAME
10
 
//    RMCast_Proxy.h
11
 
//
12
 
// = AUTHOR
13
 
//    Carlos O'Ryan <coryan@uci.edu>
14
 
//
15
 
// ============================================================================
16
 
 
17
 
#ifndef ACE_RMCAST_PROXY_H
18
 
#define ACE_RMCAST_PROXY_H
19
 
#include /**/ "ace/pre.h"
20
 
 
21
 
#include "RMCast_Module.h"
22
 
 
23
 
#if !defined (ACE_LACKS_PRAGMA_ONCE)
24
 
# pragma once
25
 
#endif /* ACE_LACKS_PRAGMA_ONCE */
26
 
 
27
 
class ACE_Message_Block;
28
 
class ACE_Time_Value;
29
 
 
30
 
//! Local representation for remote peers
31
 
/*!
32
 
  Both senders and receivers in the multicast group need to maintain
33
 
  explicit representations of their "peers".  For example, a sender
34
 
  needs to know the list of all the receivers and what messages they
35
 
  have reported as successfully received.
36
 
  Likewise, the receiver needs to maintain separate state for each
37
 
  remote sender, and must be able to disconnect from all of them
38
 
  gracefully when needed.
39
 
  The RMCast_Proxy class is an opaque representation of such a peer,
40
 
  and hides all the networking details from the rest of the system.
41
 
*/
42
 
class ACE_RMCast_Export ACE_RMCast_Proxy : public ACE_RMCast_Module
43
 
{
44
 
public:
45
 
  //! Constructor
46
 
  ACE_RMCast_Proxy (void);
47
 
  // Constructor
48
 
 
49
 
  //! Destructor
50
 
  virtual ~ACE_RMCast_Proxy (void);
51
 
 
52
 
  //! Return the next sequence number expected by the peer. Only
53
 
  //! applies to remote receiver proxies.
54
 
  /*!
55
 
   * Please read the documentation in ACE_RMCast::Ack
56
 
   */
57
 
  virtual ACE_UINT32 next_expected (void) const;
58
 
 
59
 
  //! Return the highest sequence number successfully received.
60
 
  //! Only applies to remote receiver proxies.
61
 
  /*!
62
 
   * Please read the documentation in ACE_RMCast::Ack
63
 
   */
64
 
  virtual ACE_UINT32 highest_received (void) const;
65
 
 
66
 
  //@{
67
 
  //! Send messages directly to the peer.
68
 
  /*!
69
 
   * Send a message directly to the peer, i.e. the message is not
70
 
   * sent through the multicast group and it may not be processed by
71
 
   * all the layers in the stack.
72
 
   */
73
 
  virtual int reply_data (ACE_RMCast::Data &) = 0;
74
 
  virtual int reply_poll (ACE_RMCast::Poll &) = 0;
75
 
  virtual int reply_ack_join (ACE_RMCast::Ack_Join &);
76
 
  virtual int reply_ack_leave (ACE_RMCast::Ack_Leave &) = 0;
77
 
  virtual int reply_ack (ACE_RMCast::Ack &) = 0;
78
 
  virtual int reply_join (ACE_RMCast::Join &) = 0;
79
 
  virtual int reply_leave (ACE_RMCast::Leave &) = 0;
80
 
  //@}
81
 
 
82
 
  /*!
83
 
   * Proxies process the ACK sequence numbers to cache the ack
84
 
   * information from the peer.
85
 
   */
86
 
  virtual int ack (ACE_RMCast::Ack &);
87
 
 
88
 
private:
89
 
  //@{
90
 
  //! Cache the sequence numbers reported from the remote peer using
91
 
  //! Ack messages
92
 
  ACE_UINT32 next_expected_;
93
 
  ACE_UINT32 highest_received_;
94
 
  //@}
95
 
};
96
 
 
97
 
#if defined (__ACE_INLINE__)
98
 
#include "RMCast_Proxy.i"
99
 
#endif /* __ACE_INLINE__ */
100
 
 
101
 
#include /**/ "ace/post.h"
102
 
#endif /* ACE_RMCAST_PROXY_H */