SubscriptionFactory.java
01 /*
02  *
03  * Licensed to the Apache Software Foundation (ASF) under one
04  * or more contributor license agreements.  See the NOTICE file
05  * distributed with this work for additional information
06  * regarding copyright ownership.  The ASF licenses this file
07  * to you under the Apache License, Version 2.0 (the
08  * "License"); you may not use this file except in compliance
09  * with the License.  You may obtain a copy of the License at
10  
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  */
21 package org.apache.qpid.server.subscription;
22 
23 import org.apache.qpid.AMQException;
24 import org.apache.qpid.framing.AMQShortString;
25 import org.apache.qpid.framing.FieldTable;
26 import org.apache.qpid.server.protocol.AMQProtocolSession;
27 import org.apache.qpid.server.flow.FlowCreditManager;
28 import org.apache.qpid.server.subscription.Subscription;
29 import org.apache.qpid.server.AMQChannel;
30 
31 /**
32  * Allows the customisation of the creation of a subscription. This is typically done within an AMQQueue. This factory
33  * primarily assists testing although in future more sophisticated subscribers may need a different subscription
34  * implementation.
35  *
36  @see org.apache.qpid.server.queue.AMQQueue
37  */
38 public interface SubscriptionFactory
39 {
40     Subscription createSubscription(int channel,
41                                     AMQProtocolSession protocolSession,
42                                     AMQShortString consumerTag,
43                                     boolean acks,
44                                     FieldTable filters,
45                                     boolean noLocal, FlowCreditManager creditManagerthrows AMQException;
46 
47 
48     Subscription createSubscription(AMQChannel channel,
49                                             AMQProtocolSession protocolSession,
50                                             AMQShortString consumerTag,
51                                             boolean acks,
52                                             FieldTable filters,
53                                             boolean noLocal,
54                                             FlowCreditManager creditManager,
55                                             ClientDeliveryMethod clientMethod,
56                                             RecordDeliveryMethod recordMethod
57     )
58             throws AMQException;
59 }