13#include "eformat/write/ROSFragment.h"
14#include "eformat/HeaderMarker.h"
15#include "eformat/Status.h"
16#include "eformat/write/SubDetectorFragment.h"
17#include "ers/StreamFactory.h"
21 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
34 set( m_node[0], m_header, 6, &m_node[1] );
36 set( m_node[2], &m_header[6], 4, 0 );
37 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
43 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
45 set( m_node[0], ros, 6, &m_node[1] );
46 set( m_node[1], &ros[6], ros[5], &m_node[2] );
47 set( m_node[2], &ros[6 + ros[5]], 4, &m_extra );
50 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
51 "Built (write) ros fragment from contiguous memory, with",
source_id(),
56 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
58 set( m_node[0], ros->
base, 6, &m_node[1] );
59 set( m_node[1], &ros->
base[6], ros->
base[5], &m_node[2] );
60 set( m_node[2], &ros->
base[6 + ros->
base[5]], 4, &m_extra );
64 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
65 "Built (write) ros fragment from paged memory, with",
source_id(),
lvl1_id(),
70 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
83 set( m_node[0], m_header, 6, &m_node[1] );
85 set( m_node[2], &m_header[6], 4, 0 );
86 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
92 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
94 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
101 memcpy(
reinterpret_cast<void*
>( m_header ),
102 reinterpret_cast<const void*
>( other.m_node[0].base ), 6 *
sizeof( uint32_t ) );
103 memcpy(
reinterpret_cast<void*
>( m_header + 6 ),
104 reinterpret_cast<const void*
>( other.m_node[2].base ), 4 *
sizeof( uint32_t ) );
107 set( m_node[0], m_header, 6, &m_node[1] );
108 set( m_node[1], other.m_node[1].base, other.m_node[1].size_word, &m_node[2] );
109 set( m_node[2], &m_header[6], 4, 0 );
110 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
118 m_parent->size_change( m_node[0].base[1], m_node[0].base[1] - m_node[0].base[5] +
n );
119 m_node[0].base[1] -= m_node[0].base[5];
120 m_node[0].base[2] -= m_node[0].base[5];
121 m_node[1].size_word = m_node[0].base[5] =
n;
122 m_node[0].base[1] +=
n;
123 m_node[0].base[2] +=
n;
124 m_node[1].base =
const_cast<uint32_t*
>(
status );
128 uint32_t old_size = m_node[0].base[1];
129 m_node[0].base[1] -= o;
130 m_node[0].base[1] +=
n;
131 if ( m_parent ) m_parent->size_change( old_size, m_node[0].base[1] );
135 ERS_DEBUG_3(
"%s Source Id. = 0x%x to ros fragment with Source Id. = 0x%x",
138 uint32_t old_size = m_node[0].base[1];
142 if ( m_last ) m_last->next( rob );
147 if ( m_parent ) m_parent->size_change( old_size, m_node[0].base[1] );
151 uint32_t retval = 3 + m_extra_count;
163 while ( last->
next ) last = last->
next;
168 while ( last->
next ) last = last->
next;