summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-08-03 17:16:15 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-08-03 17:16:15 +0100
commit46944ea0a42980c8d82d6518ad0d9eee99bc3ff5 (patch)
treedfdd5749f429623c6669869eb223b497cf31b239
parent9788dba864f896b590d302c6be6bc5bcabda8f8e (diff)
downloadrabbitmq-server-bug24294.tar.gz
Parameterise channel starting, export inet_op/1.bug24294
-rw-r--r--src/rabbit_amqp.erl3
-rw-r--r--src/rabbit_amqp_0_x.erl6
-rw-r--r--src/rabbit_channel_sup.erl10
-rw-r--r--src/rabbit_reader.erl3
4 files changed, 13 insertions, 9 deletions
diff --git a/src/rabbit_amqp.erl b/src/rabbit_amqp.erl
index 9c748a77..ded5a8d3 100644
--- a/src/rabbit_amqp.erl
+++ b/src/rabbit_amqp.erl
@@ -24,7 +24,8 @@ behaviour_info(callbacks) ->
{start_connection, 2},
{handle_input, 3},
{assemble_frame, 3},
- {assemble_frames, 5}
+ {assemble_frames, 5},
+ {channel_spec, 1}
];
behaviour_info(_Other) ->
undefined.
diff --git a/src/rabbit_amqp_0_x.erl b/src/rabbit_amqp_0_x.erl
index f0173556..6cab0792 100644
--- a/src/rabbit_amqp_0_x.erl
+++ b/src/rabbit_amqp_0_x.erl
@@ -19,7 +19,7 @@
-include("rabbit_framing.hrl").
-export([accept_handshake_bytes/1, start_connection/2, handle_input/3,
- assemble_frame/3, assemble_frames/5]).
+ assemble_frame/3, assemble_frames/5, channel_spec/1]).
-export([process_channel_frame/5]). %% used by erlang-client TODO
@@ -127,6 +127,10 @@ assemble_frames(Channel, MethodRecord, Content, FrameMax, Protocol) ->
Channel, Content, FrameMax, Protocol),
[MethodFrame | ContentFrames].
+channel_spec(Args) ->
+ {channel, {rabbit_channel, start_link, Args},
+ intrinsic, ?MAX_WAIT, worker, [rabbit_channel]}.
+
%%--------------------------------------------------------------------------
handle_frame(Type, 0, Payload,
diff --git a/src/rabbit_channel_sup.erl b/src/rabbit_channel_sup.erl
index 68f69e6e..b8c4ff8f 100644
--- a/src/rabbit_channel_sup.erl
+++ b/src/rabbit_channel_sup.erl
@@ -56,12 +56,10 @@ start_link({tcp, Sock, Channel, FrameMax, ReaderPid, Module, Protocol,
intrinsic, ?MAX_WAIT, worker, [rabbit_writer]}),
{ok, ChannelPid} =
supervisor2:start_child(
- SupPid,
- {channel, {rabbit_channel, start_link,
- [Channel, ReaderPid, WriterPid, ReaderPid, Protocol,
- User, VHost, Capabilities, Collector,
- start_limiter_fun(SupPid)]},
- intrinsic, ?MAX_WAIT, worker, [rabbit_channel]}),
+ SupPid, Module:channel_spec(
+ [Channel, ReaderPid, WriterPid, ReaderPid, Protocol,
+ User, VHost, Capabilities, Collector,
+ start_limiter_fun(SupPid)])),
{ok, AState} = rabbit_command_assembler:init(Protocol),
{ok, SupPid, {ChannelPid, AState}};
start_link({direct, Channel, ClientChannelPid, ConnPid, Protocol, User, VHost,
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index 062c6eb6..3d55d46e 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -28,7 +28,8 @@
-export([all_channels/0, channel_cleanup/1, emit_stats/1, infos/2,
internal_conserve_memory/2, maybe_close/1, send_exception/3,
- send_on_channel0/4, switch_callback/3, server_properties/1]).
+ send_on_channel0/4, switch_callback/3, server_properties/1,
+ inet_op/1]).
-define(HANDSHAKE_TIMEOUT, 10).
-define(NORMAL_TIMEOUT, 3).