15 if( id < 0 || id >=
MAX_ID ) {
16 perror (
"dataSpyOpen - id number out of range");
20#if( defined SOLARIS || defined POSIX )
24 snprintf( object_name,
sizeof(object_name),
"SHM_%d",
shmkey+
id );
26 shmid[id] = shm_open( object_name, O_RDONLY, (mode_t)0 );
27 if(
shmid[
id] == -1 ) {
35 if (
shmid[
id] == -1) {perror(
"shmget");
return -1;}
39#if( defined SOLARIS || defined POSIX )
60 std::cout <<
"DataSpy Shared buffer area " <<
id <<
" (/SHM_" <<
shmkey+
id <<
") located at " << (
unsigned long)
shm_bufferarea[
id] << std::endl;
82 if( id < 0 || id >=
MAX_ID ) {
84 perror(
"DataSpy::Close - id number out of range" );
89#if (defined SOLARIS || defined POSIX)
100 std::cout <<
"DataSpy Shared buffer area " <<
id <<
" located at " << (
unsigned long)
shm_bufferarea[
id] <<
" detached" << std::endl;
119 if( id < 0 || id >=
MAX_ID ) {
120 perror(
"DataSpy::Read - id number out of range" );
140 if( length < len ) len = length;
143 printf(
"DataSpy::Read id %d: Age %lld Index %d Buffer length %d\n",
148 for(
unsigned int i = 0; i < (len >> 2); i++ )
149 ptr[i] = bufferaddress[i];
156 std::cout <<
"DataSpy::Read id " <<
id <<
": Copied oldage " <<
current_age[id];
173 std::cout <<
"DataSpy::Read - id " <<
id <<
" has no data" << std::endl;
178 std::cout <<
"DataSpy::Read - id " <<
id <<
" length " << len << std::endl;
BUFFER_HEADER * baseaddress
int number_of_buffers[MAX_ID]
int Read(int id, char *data, unsigned int length)
int ReadWithSeq(int id, char *data, unsigned int length, int *seq)
int buffers_offset[MAX_ID]
void * shm_bufferarea[MAX_ID]
unsigned long long current_age[MAX_ID]