forked from apache/activemq-artemis
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CoreRemotingConnection.java
142 lines (123 loc) · 4.07 KB
/
CoreRemotingConnection.java
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
138
139
140
141
142
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.artemis.core.protocol.core;
import org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl;
import org.apache.activemq.artemis.core.security.ActiveMQPrincipal;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
/**
* Extension of RemotingConnection for the ActiveMQ Artemis core protocol
*/
public interface CoreRemotingConnection extends RemotingConnection {
/**
* The client protocol used on the communication.
* This will determine if the client has support for certain packet types
*/
int getChannelVersion();
default boolean isVersionBeforeAddressChange() {
int version = getChannelVersion();
return (version > 0 && version < PacketImpl.ADDRESSING_CHANGE_VERSION);
}
default boolean isVersionBeforeAsyncResponseChange() {
int version = getChannelVersion();
return (version > 0 && version < PacketImpl.ASYNC_RESPONSE_CHANGE_VERSION);
}
default boolean isVersionSupportConsumerPriority() {
int version = getChannelVersion();
return version >= PacketImpl.CONSUMER_PRIORITY_CHANGE_VERSION;
}
default boolean isVersionNewFQQN() {
int version = getChannelVersion();
return version >= PacketImpl.ARTEMIS_2_7_0_VERSION;
}
/**
* Sets the client protocol used on the communication. This will determine if the client has
* support for certain packet types
*/
void setChannelVersion(int clientVersion);
/**
* Returns the channel with the channel id specified.
* <p>
* If it does not exist create it with the confirmation window size.
*
* @param channelID the channel id
* @param confWindowSize the confirmation window size
* @return the channel
*/
Channel getChannel(long channelID, int confWindowSize);
/**
* add the channel with the specified channel id
*
* @param channelID the channel id
* @param channel the channel
*/
void putChannel(long channelID, Channel channel);
/**
* remove the channel with the specified channel id
*
* @param channelID the channel id
* @return true if removed
*/
boolean removeChannel(long channelID);
/**
* generate a unique (within this connection) channel id
*
* @return the id
*/
long generateChannelID();
/**
* Resets the id generator used to generate id's.
*
* @param id the first id to set it to
*/
void syncIDGeneratorSequence(long id);
/**
* Returns the next id to be chosen.
*
* @return the id
*/
long getIDGeneratorSequence();
/**
* Returns the current timeout for blocking calls
*
* @return the timeout in milliseconds
*/
long getBlockingCallTimeout();
/**
* Returns the current timeout for blocking calls
*
* @return the timeout in milliseconds
*/
long getBlockingCallFailoverTimeout();
/**
* Returns the transfer lock used when transferring connections.
*
* @return the lock
*/
Object getTransferLock();
/**
* Returns the default security principal
*
* @return the principal
*/
ActiveMQPrincipal getDefaultActiveMQPrincipal();
/**
* @param timeout
* @return
* @throws IllegalStateException if the connection is closed
*/
boolean blockUntilWritable(long timeout);
}