summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/FixedReference.java
blob: df5db56fad1fc4aeccfafae68f4e12a65bb49018 (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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// **********************************************************************
//
// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************

package IceInternal;

public class FixedReference extends Reference
{
    public
    FixedReference(Instance inst,
    		   Ice.Identity ident,
		   java.util.Map ctx,
		   String fs,
		   int md,
		   Ice.ConnectionI[] fixedConns)
    {
    	super(inst, ident, ctx, fs, md);
        _fixedConnections = fixedConns;
    }

    public final Ice.ConnectionI[]
    getFixedConnections()
    {
        return _fixedConnections;
    }

    public boolean
    getSecure()
    {
	return false;
    }

    public Endpoint[]
    getEndpoints()
    {
        return new Endpoint[0];
    }

    public boolean
    getCollocationOptimization()
    {
        return false;
    }

    public Reference
    changeSecure(boolean sec)
    {
	return this;
    }

    public Reference
    changeRouter(Ice.RouterPrx newRouter)
    {
        return this;
    }

    public Reference
    changeLocator(Ice.LocatorPrx newLocator)
    {
        return this;
    }

    public Reference
    changeCollocationOptimization(boolean newCollocationOptimization)
    {
        return this;
    }

    public Reference
    changeCompress(boolean newCompress)
    {
	// TODO: FixedReferences should probably have a _compress flag,
	// that gets its default from the fixed connection this reference
	// refers to. This should be changable with changeCompress(), and
	// reset in changeDefault().
        return this;
    }

    public Reference
    changeTimeout(int newTimeout)
    {
	return this;
    }

    public void
    streamWrite(BasicStream s)
	throws Ice.MarshalException
    {
         Ice.MarshalException ex = new Ice.MarshalException();
	 ex.reason = "Cannot marshal a fixed reference";
	 throw ex;
    }

    public Ice.ConnectionI
    getConnection(Ice.BooleanHolder compress)
    {
        Ice.ConnectionI[] filteredConns = filterConnections(_fixedConnections);
	if(filteredConns.length == 0)
	{
	    Ice.NoEndpointException ex = new Ice.NoEndpointException();
	    ex.proxy = toString();
	    throw ex;
	}

	Ice.ConnectionI connection = filteredConns[0];
	assert(connection != null);
	compress.value = connection.endpoint().compress();

	return connection;
    }

    public boolean
    equals(java.lang.Object obj)
    {
        if(this == obj)
	{
	    return true;
	}
	if(!(obj instanceof FixedReference))
	{
	    return false;
	}
        FixedReference rhs = (FixedReference)obj;
        if(!super.equals(rhs))
        {
            return false;
        }
	return java.util.Arrays.equals(_fixedConnections, rhs._fixedConnections);
    }

    private Ice.ConnectionI _fixedConnections[];
}