Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

The

...

C++

...

broker

...

uses

...

handler

...

chains

...

to

...

break

...

complex

...

processing

...

into

...

individual

...

pieces.

...

  • Each

...

  • session

...

  • has

...

  • its

...

  • own

...

  • set

...

  • of

...

  • FrameHandler

...

  • chains.

...

  • Frames

...

  • from

...

  • the

...

  • network

...

  • are

...

  • delivered

...

  • to

...

  • the

...

  • first

...

  • handler

...

  • in

...

  • the

...

  • chain.

...

  • Handlers

...

  • do

...

  • something

...

  • with

...

  • a

...

  • frame,

...

  • then

...

  • pass

...

  • it

...

  • to

...

  • the

...

  • next

...

  • handler.

...

  • Handlers

...

  • may

...

  • "filter"

...

  • frames

...

  • by

...

  • not

...

  • passing

...

  • some

...

  • frames

...

  • to

...

  • the

...

  • next

...

  • handler.

...

Current

...

status

...

(2002/9/20)

...

Each

...

chain

...

starts

...

with

...

a

...

SessionHandler.

...

It

...

handles

...

L2

...

(session

...

open,

...

close

...

etc.)

...

and

...

passes

...

other

...

frames

...

to

...

the

...

next

...

handler.

...

L3/L4

...

frames

...

are

...

handled

...

by

...

the

...

SemanticHandler.

...

For

...

clustering,

...

a

...

ClusterHandler

...

is

...

inserted

...

at

...

the

...

start

...

of

...

the

...

chain.

...

It

...

replicates

...

frames

...

to

...

a

...

backup

...

broker

...

so

...

the

...

backup

...

can

...

handle

...

failover.

...

It

...

then

...

passes

...

frames

...

on

...

to

...

the

...

normal

...

session

...

handlers.

...

Approach

...

for

...

multi-frame

...

segments

  • The frame handler chain continues to handle individual frames.
  • Each handler uses a FrameSet to accumulate its frames.
  • Frame no longer contains a Body, moved to FrameSet
    Code Block
    
    class FrameSet { // sketch
     void add(const Frame& frame); // True if 
     const AMQMethodBody* getMethod(); // 0 means not complete.
     const AMQHeaderBody* getHeader();
     const AMQContentBody* getContent(); 
    };
    

...

  • Note:

...

  • All

...

  • the

...

  • visitor/dispatch

...

  • classes

...

  • using

...

  • AMQFrame

...

  • need

...

  • to

...

  • be

...

  • reworked.

...

  • Dispatch

...

  • will

...

  • always

...

  • be

...

  • based

...

  • on

...

  • an

...

  • AMQMethodBody,

...

  • not

...

  • a

...

  • frame.

...

Rationale:

...

''Frame

...

rather

...

than

...

Segment/FrameSet

...

handlers'':

...

Allows

...

most

...

flexibility

...

to

...

compose

...

or

...

not

...

compose

...

frames

...

into

...

segments

...

&

...

FrameSets.

...

For

...

example

...

a

...

cluster

...

handler

...

needs

...

to

...

replicate

...

frame-by-frame,

...

so

...

we

...

don't

...

want

...

to

...

compose

...

the

...

full

...

segment

...

up

...

front.

...

Since

...

the

...

FrameSet

...

class

...

provides

...

the

...

composition

...

logic,

...

this

...

is

...

specified

...

only

...

once

...

and

...

easy

...

to

...

use

...

in

...

frame

...

handlers.

...

''No

...

Segment

...

class'':

...

A

...

segment

...

by

...

itself

...

is

...

not

...

very

...

useful.

...

A

...

non-content

...

method

...

is

...

just

...

a

...

FrameSet

...

containing

...

a

...

single

...

method

...

segment.

...

For

...

content

...

bearing

...

methods

...

are

...

a

...

frameset

...

with

...

headers

...

&

...

content.

...

There's

...

little

...

value

...

for

...

a

...

stand

...

alone

...

segment

...

class.