producer.cpp

Go to the documentation of this file.
00001 
00005 #include <string>
00006 #include <iostream>
00007 #include <sstream>
00008 
00009 #include "shm_segment.h"
00010 #include "shm_mmap.h"
00011 #include "shm_ptr.h"
00012 #include "scoped_lock.h"
00013 #include "shm_allocator.h"
00014 #include "shm_message.h"
00015 #include "shm_queue.h"
00016 
00017 void reportInitialization( shm_segment *seg_addr, shm_queue<shm_message> *q_addr );
00018  
00019 int main(int argc, char*argv[]) {
00020   int segment_key = 30000; 
00021   int segment_size = 61440;
00022   int segment_perm = 01640;
00023   unsigned int queue_size = 3000;
00024   int message_count = 0;
00025   shm_segment seg( segment_key, segment_size, segment_perm );
00026   shm_allocator a( seg );
00027   shm_queue<shm_message> q( a, queue_size );
00028   reportInitialization( &seg, &q ) ;
00029  
00030   while ( true ) {
00031       std::cout 
00032     << "enter a message: " 
00033     << std::flush;
00034       std::string line;
00035       std::getline( std::cin, line );
00036       //      Message* m = new ( a ) Message( line, a );
00037       shm_message* m = new ( a ) shm_message;
00038       m->sequence_num = message_count++;
00039       m->message.reset( static_cast<char*>( a.alloc( line.size() + 1 ) ), seg );
00040       strcpy( m->message.get(seg), line.c_str() );
00041       q.push( shm_ptr<shm_message>( m, seg ) );
00042       std::cout 
00043     << "message id : " 
00044     << q.size()
00045     << ", message address : " 
00046     << m
00047     << std::endl;
00048     }
00049 }
00050 
00051 void reportInitialization( shm_segment *seg_addr, shm_queue<shm_message> *q_addr ) 
00052 {
00053  std::cout 
00054     << "segment id : " 
00055     << seg_addr->get_id()
00056     << std::endl
00057     << std::flush;
00058   std::cout 
00059     << "segment address : " 
00060     << seg_addr
00061     << std::endl
00062     << std::flush;
00063   std::cout 
00064     << "queue address : " 
00065     << q_addr
00066     << std::endl
00067     << std::flush;
00068 }
00069 
00070 /*
00071  * $Log: producer.cpp,v $
00072  * Revision 1.1.1.1  2006/08/30 12:14:46  oommoo
00073  * Initial checkin of project library
00074  *
00075  *
00076  * SharedMemory notes from :
00077  *
00078  * http://home.earthlink.net/~joshwalker1/writing/SharedMemory.html
00079  *
00080  * main routine for producer
00081  *
00082  */

Project shmq hosted by   SourceForge.net
Documentation generated on Sat Sep 2 10:07:40 2006 for shmq by   doxygen.org 1.4.6