1 // This source code is dual-licensed under the Apache License, version 2 // 2.0, and the Mozilla Public License, version 1.1. 3 // 4 // The APL v2.0: 5 // 6 //--------------------------------------------------------------------------- 7 // Copyright (C) 2007-2010 LShift Ltd., Cohesive Financial 8 // Technologies LLC., and Rabbit Technologies Ltd. 9 // 10 // Licensed under the Apache License, Version 2.0 (the "License"); 11 // you may not use this file except in compliance with the License. 12 // You may obtain a copy of the License at 13 // 14 // http://www.apache.org/licenses/LICENSE-2.0 15 // 16 // Unless required by applicable law or agreed to in writing, software 17 // distributed under the License is distributed on an "AS IS" BASIS, 18 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 // See the License for the specific language governing permissions and 20 // limitations under the License. 21 //--------------------------------------------------------------------------- 22 // 23 // The MPL v1.1: 24 // 25 //--------------------------------------------------------------------------- 26 // The contents of this file are subject to the Mozilla Public License 27 // Version 1.1 (the "License"); you may not use this file except in 28 // compliance with the License. You may obtain a copy of the License at 29 // http://www.rabbitmq.com/mpl.html 30 // 31 // Software distributed under the License is distributed on an "AS IS" 32 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the 33 // License for the specific language governing rights and limitations 34 // under the License. 35 // 36 // The Original Code is The RabbitMQ .NET Client. 37 // 38 // The Initial Developers of the Original Code are LShift Ltd, 39 // Cohesive Financial Technologies LLC, and Rabbit Technologies Ltd. 40 // 41 // Portions created before 22-Nov-2008 00:00:00 GMT by LShift Ltd, 42 // Cohesive Financial Technologies LLC, or Rabbit Technologies Ltd 43 // are Copyright (C) 2007-2008 LShift Ltd, Cohesive Financial 44 // Technologies LLC, and Rabbit Technologies Ltd. 45 // 46 // Portions created by LShift Ltd are Copyright (C) 2007-2010 LShift 47 // Ltd. Portions created by Cohesive Financial Technologies LLC are 48 // Copyright (C) 2007-2010 Cohesive Financial Technologies 49 // LLC. Portions created by Rabbit Technologies Ltd are Copyright 50 // (C) 2007-2010 Rabbit Technologies Ltd. 51 // 52 // All Rights Reserved. 53 // 54 // Contributor(s): ______________________________________. 55 // 56 //--------------------------------------------------------------------------- 57 using RabbitMQ.Client; 58 using RabbitMQ.Client.Impl; 59 using RabbitMQ.Util; 60 61 namespace RabbitMQ.Client.Framing.Impl.v0_9 { 62 public abstract class ProtocolBase: AbstractProtocolBase { 63 CreateFrameHandler(AmqpTcpEndpoint endpoint)64 public override IFrameHandler CreateFrameHandler(AmqpTcpEndpoint endpoint) { 65 return new SocketFrameHandler_0_9(endpoint); 66 } 67 CreateModel(ISession session)68 public override IModel CreateModel(ISession session) { 69 return new Model(session); 70 } 71 CreateConnection(ConnectionFactory factory, bool insist, IFrameHandler frameHandler)72 public override IConnection CreateConnection(ConnectionFactory factory, 73 bool insist, 74 IFrameHandler frameHandler) 75 { 76 return new Connection(factory, insist, frameHandler); 77 } 78 CreateConnectionClose(ushort reasonCode, string reasonText, out Command request, out int replyClassId, out int replyMethodId)79 public override void CreateConnectionClose(ushort reasonCode, 80 string reasonText, 81 out Command request, 82 out int replyClassId, 83 out int replyMethodId) 84 { 85 request = new Command(new RabbitMQ.Client.Framing.Impl.v0_9.ConnectionClose(reasonCode, 86 reasonText, 87 0, 0)); 88 replyClassId = RabbitMQ.Client.Framing.Impl.v0_9.ConnectionCloseOk.ClassId; 89 replyMethodId = RabbitMQ.Client.Framing.Impl.v0_9.ConnectionCloseOk.MethodId; 90 } 91 CreateChannelClose(ushort reasonCode, string reasonText, out Command request, out int replyClassId, out int replyMethodId)92 public override void CreateChannelClose(ushort reasonCode, 93 string reasonText, 94 out Command request, 95 out int replyClassId, 96 out int replyMethodId) 97 { 98 request = new Command(new RabbitMQ.Client.Framing.Impl.v0_9.ChannelClose(reasonCode, 99 reasonText, 100 0, 0)); 101 replyClassId = RabbitMQ.Client.Framing.Impl.v0_9.ChannelCloseOk.ClassId; 102 replyMethodId = RabbitMQ.Client.Framing.Impl.v0_9.ChannelCloseOk.MethodId; 103 } 104 CanSendWhileClosed(Command cmd)105 public override bool CanSendWhileClosed(Command cmd) 106 { 107 return cmd.m_method is RabbitMQ.Client.Framing.Impl.v0_9.ChannelCloseOk; 108 } 109 } 110 } 111