From: Reed H. <re...@mo...> - 2006-03-08 22:12:16
|
Toby Collett wrote: > Hi, > Many of the queue full messages relate to client reading too slowly (and > or drivers producing data too fast) > > The solution to this is equivalent to using the PULL_NEW mode in player > 1.6 and involves two stages. > > 1) set the server into PULL mode > client.SetDataMode(PLAYER_DATAMODE_PULL); All of the examples should certainly be changed to include this. > 2) set the server to replace queued data messages with new messages > client.SetReplaceRule(-1,-1,PLAYER_MSGTYPE_DATA,-1,1); It might avoid such problems, since it seems like the server sending data is often going to be much faster than e.g. a client getting messages over the wireless network. Could each driver choose a suitable default replacement rule? Or would it be hard to choose one for many drivers? For example, for the typical driving-around task I would do full replacement for sensor data, odometry, camera images being sent to the client. Maybe, though, if your task was capturing data for future analysis you would want as much data as you could. For most commands sent from a client, no replacement, or perhaps a short message queue. In general, when a queue is full, what happens? Does the last message in the queue get replaced? Or does adding the message fail (and the message gets dropped)? |