let rec partition_view view lst =
let rec view_split view view_part items =
if View.equal View.empty view then
(view,view_part)
else begin
match items with
0 ->
(view,view_part)
| _ ->
let proc = View.choose view in
let view_part' = View.add view_part proc in
let view' = View.remove view proc in
view_split view' view_part' (items-1)
end
in
if View.equal view View.empty then
lst
else begin
let (view',part) = view_split view View.empty
max_views_per_packet_fragment in
partition_view view' (part :: lst)
end