blob: d90363c92a9db648deb88f8ebed17d54d4b89626 (
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
|
// **********************************************************************
//
// Copyright (c) 2003
// ZeroC, Inc.
// Billerica, MA, USA
//
// All Rights Reserved.
//
// Ice is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License version 2 as published by
// the Free Software Foundation.
//
// **********************************************************************
package IceInternal;
public class IncomingBase
{
protected
IncomingBase(Instance instance, Connection connection, Ice.ObjectAdapter adapter, boolean response)
{
_current = new Ice.Current();
_current.id = new Ice.Identity();
_current.adapter = adapter;
_cookie = new Ice.LocalObjectHolder();
_connection = connection;
_response = response;
_is = new BasicStream(instance);
_os = new BasicStream(instance);
}
protected
IncomingBase(IncomingBase in) // Adopts the argument. It must not be used afterwards.
{
_current = in._current;
_servant = in._servant;
_locator = in._locator;
_cookie = in._cookie;
_connection = in._connection;
_response = in._response;
_is = in._is;
in._is = null;
_os = in._os;
in._os = null;
}
//
// Reclaim resources.
//
final public void
__destroy()
{
if(_is != null)
{
_is.destroy();
_is = null;
}
if(_os != null)
{
_os.destroy();
_os = null;
}
}
final protected void
__finishInvoke()
{
if(_locator != null && _servant != null)
{
_locator.finished(_current, _servant, _cookie.value);
}
_is.endReadEncaps();
//
// Send a response if necessary. If we don't need to send a
// response, we still need to tell the connection that we're
// finished with dispatching.
//
if(_response)
{
_connection.sendResponse(_os);
}
else
{
_connection.sendNoResponse();
}
}
final protected void
__warning(Exception ex)
{
if(_os.instance().properties().getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0)
{
java.io.StringWriter sw = new java.io.StringWriter();
java.io.PrintWriter pw = new java.io.PrintWriter(sw);
IceUtil.OutputBase out = new IceUtil.OutputBase(pw);
out.setUseTab(false);
out.print("dispatch exception:");
out.print("\nidentity: " + Ice.Util.identityToString(_current.id));
out.print("\nfacet: ");
IceInternal.ValueWriter.write(_current.facet, out);
out.print("\noperation: " + _current.operation);
out.print("\n");
ex.printStackTrace(pw);
pw.flush();
_os.instance().logger().warning(sw.toString());
}
}
protected Ice.Current _current;
protected Ice.Object _servant;
protected Ice.ServantLocator _locator;
protected Ice.LocalObjectHolder _cookie;
protected Connection _connection;
protected boolean _response;
protected BasicStream _is;
protected BasicStream _os;
};
|