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
|
// **********************************************************************
//
// Copyright (c) 2002
// MutableRealms, Inc.
// Huntsville, AL, USA
//
// All Rights Reserved
//
// **********************************************************************
#ifndef ICE_ENDPOINT_H
#define ICE_ENDPOINT_H
#include <IceUtil/Shared.h>
#include <Ice/EndpointF.h>
#include <Ice/InstanceF.h>
#include <Ice/TransceiverF.h>
#include <Ice/ConnectorF.h>
#include <Ice/AcceptorF.h>
namespace IceInternal
{
class BasicStream;
class ICE_PROTOCOL_API Endpoint : public ::IceUtil::Shared
{
public:
//
// Marshal the endpoint
//
virtual void streamWrite(BasicStream*) const = 0;
//
// Convert the endpoint to its string form
//
virtual std::string toString() const = 0;
//
// Return the endpoint type
//
virtual ::Ice::Short type() const = 0;
//
// Return the timeout for the endpoint in milliseconds. 0 means
// non-blocking, -1 means no timeout.
//
virtual ::Ice::Int timeout() const = 0;
//
// Return a new endpoint with a different timeout value, provided
// that timeouts are supported by the endpoint. Otherwise the same
// endpoint is returned.
//
virtual EndpointPtr timeout(::Ice::Int) const = 0;
//
// Return true if the endpoint is datagram-based.
//
virtual bool datagram() const = 0;
//
// Return true if the endpoint is secure.
//
virtual bool secure() const = 0;
//
// Return true if the endpoint type is unknown.
//
virtual bool unknown() const = 0;
//
// Return a client side transceiver for this endpoint, or null if a
// transceiver can only be created by a connector.
//
virtual TransceiverPtr clientTransceiver() const = 0;
//
// Return a server side transceiver for this endpoint, or null if a
// transceiver can only be created by an acceptor. In case a
// transceiver is created, this operation also returns a new
// "effective" endpoint, which might differ from this endpoint,
// for example, if a dynamic port number is assigned.
//
virtual TransceiverPtr serverTransceiver(EndpointPtr&) const = 0;
//
// Return a connector for this endpoint, or null if no connector
// is available.
//
virtual ConnectorPtr connector() const = 0;
//
// Return an acceptor for this endpoint, or null if no acceptors
// is available. In case an acceptor is created, this operation
// also returns a new "effective" endpoint, which might differ
// from this endpoint, for example, if a dynamic port number is
// assigned.
//
virtual AcceptorPtr acceptor(EndpointPtr&) const = 0;
//
// Check whether the endpoint is equivalent to a specific
// Transceiver or Acceptor
//
virtual bool equivalent(const TransceiverPtr&) const = 0;
virtual bool equivalent(const AcceptorPtr&) const = 0;
//
// Compare endpoints for sorting purposes
//
virtual bool operator==(const Endpoint&) const = 0;
virtual bool operator!=(const Endpoint&) const = 0;
virtual bool operator<(const Endpoint&) const = 0;
};
}
#endif
|