func (channel *Channel) basicRoute(methodFrame amqp.MethodFrame) *amqp.AMQPError { switch method := methodFrame.(type) { case *amqp.BasicQos: return channel.basicQos(method) case *amqp.BasicRecover: return channel.basicRecover(method) case *amqp.BasicNack: return channel.basicNack(method) case *amqp.BasicConsume: return channel.basicConsume(method) case *amqp.BasicCancel: return channel.basicCancel(method) case *amqp.BasicCancelOk: return channel.basicCancelOk(method) case *amqp.BasicPublish: return channel.basicPublish(method) case *amqp.BasicGet: return channel.basicGet(method) case *amqp.BasicAck: return channel.basicAck(method) case *amqp.BasicReject: return channel.basicReject(method) } var classId, methodId = methodFrame.MethodIdentifier() return amqp.NewHardError(540, "Unable to route method frame", classId, methodId) }
func (channel *Channel) txRoute(methodFrame amqp.MethodFrame) *amqp.AMQPError { switch method := methodFrame.(type) { case *amqp.TxSelect: return channel.txSelect(method) case *amqp.TxCommit: return channel.txCommit(method) case *amqp.TxRollback: return channel.txRollback(method) } var classId, methodId = methodFrame.MethodIdentifier() return amqp.NewHardError(540, "Unable to route method frame", classId, methodId) }
func (channel *Channel) exchangeRoute(methodFrame amqp.MethodFrame) *amqp.AMQPError { switch method := methodFrame.(type) { case *amqp.ExchangeDeclare: return channel.exchangeDeclare(method) case *amqp.ExchangeBind: return channel.exchangeBind(method) case *amqp.ExchangeUnbind: return channel.exchangeUnbind(method) case *amqp.ExchangeDelete: return channel.exchangeDelete(method) } var classId, methodId = methodFrame.MethodIdentifier() return amqp.NewHardError(540, "Not implemented", classId, methodId) }
func (channel *Channel) connectionRoute(conn *AMQPConnection, methodFrame amqp.MethodFrame) *amqp.AMQPError { switch method := methodFrame.(type) { case *amqp.ConnectionStartOk: return channel.connectionStartOk(conn, method) case *amqp.ConnectionTuneOk: return channel.connectionTuneOk(conn, method) case *amqp.ConnectionOpen: return channel.connectionOpen(conn, method) case *amqp.ConnectionClose: return channel.connectionClose(conn, method) case *amqp.ConnectionSecureOk: return channel.connectionSecureOk(conn, method) case *amqp.ConnectionCloseOk: return channel.connectionCloseOk(conn, method) case *amqp.ConnectionBlocked: return channel.connectionBlocked(conn, method) case *amqp.ConnectionUnblocked: return channel.connectionUnblocked(conn, method) } var classId, methodId = methodFrame.MethodIdentifier() return amqp.NewHardError(540, "Unable to route method frame", classId, methodId) }
// Send a method frame out to the client // TODO: why isn't this taking a pointer? func (channel *Channel) SendMethod(method amqp.MethodFrame) { // fmt.Printf("Sending method: %s\n", method.MethodName()) var buf = bytes.NewBuffer([]byte{}) method.Write(buf) channel.outgoing <- &amqp.WireFrame{uint8(amqp.FrameMethod), channel.id, buf.Bytes()} }