10.07.2015 Views

pdf - 395 K - Ecole des mines de Nantes

pdf - 395 K - Ecole des mines de Nantes

pdf - 395 K - Ecole des mines de Nantes

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ON on UAData}{}Monitor.Enter(data);// LOCKUAData.States state = data.state;if (state == UAData.States.AVAILABLE){ForwardMessage(data);}else if (state == UAData.States.BEING_CREATED){UpdateMessageQueue(data);}else // state == TERMINATED{InitiateUACreation(data, userId);}private void FinishUACreation(UAData data, UserId userId){// Forward all Messages in waiting queueforeach (Message m in data.messages){m.Sen<strong>de</strong>r = agent.GetId();m.Recipient = data.agent;SendMessage(m);}data.messages = null;data.state = UAData.States.AVAILABLE;Monitor.Exit(data); //LOCK OFF on UAData}private void ForwardMessage(UAData data){data.lastMessageTimestamp = DateTime.Now;message.Sen<strong>de</strong>r = agent.GetId();message.Recipient = data.agent;Monitor.Exit(data); //LOCK OFF on UADataSendMessage(message);}private void InitiateUACreation(UAData data, UserId userId){data.state = UAData.States.BEING_CREATED;// Create queue of waiting Messagesdata.messages = new Queue();data.messages.Enqueue(message);Monitor.Exit(data); //LOCK OFF on UAData// data can be accessed again: threads that access itwill be in the// BEING_CREATED caseMessage reply = RequestUACreation(userId);ON on UADataMonitor.Enter(data);data.agent = reply.Sen<strong>de</strong>r;FinishUACreation(data, userId);// LOCKMSc EMOOSE Thesis – http://www.emn.fr/EMOOSE 100

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!