コード例 #1
0
ファイル: producer.cpp プロジェクト: franciscoSoler/nebla
int main(int argc, char **argv)
{
    srand (time(NULL));
    Argv arguments;

    arguments.setArgv(argv);

    int waitTime;
    int numberOfConsumers;
    int numberOfProducers;
    int producerId;
    std::string queuePath;
    char key;
    std::string keyStr;


    producerId = StringUtils::StringToNumber<int>(arguments.getArg(1));
    queuePath = arguments.getArg(2);
    keyStr = arguments.getArg(3);
    key = keyStr[0];
    numberOfConsumers = StringUtils::StringToNumber<int>(arguments.getArg(4));
    numberOfProducers = StringUtils::StringToNumber<int>(arguments.getArg(5));

    MessageQueue<Message> queue(queuePath, key);
    Message dato;
    int counter=0;

    std::cout << "Producer"<< producerId<<" started"<<std::endl;

    while(true)
    {
        waitTime = rand() % 5 + 1;
        sleep(waitTime);

        dato.id = counter * numberOfProducers + producerId;
        counter++;

        std::cout << "Producer:"<<producerId<< " produced:" <<dato.id<<std::endl;

        for(int j=1; j<=numberOfConsumers; j++)
        {
            dato.mtype = j;
            if(queue.put(dato)<0)
                exit(0);
        }
    }

    return 0;
}