type RoomHash map[bson.ObjectId]*Room type ConsumerHash map[bson.ObjectId]*Consumer
type RoomMediator struct { roomHash RoomHash consumerHash ConsumerHash }
funcNewRoomMediator()*RoomMediator{ res := RoomMediator{} res.roomHash=make(RoomHash) res.consumerHash=make(ConsumerHash) return &res }
func(this *RoomMediator)SetRoom(room *Room){ iflen(this.consumerHash)>0{ var c *Consumer for _,v := range this.consumerHash{ fmt.Println(v.Name +" buy " + room.Name) c = v break } delete(this.consumerHash,c.Id) return } this.roomHash[room.Id]=room }
func(this *RoomMediator)SetConsumerHash(consumer *Consumer){ iflen(this.roomHash)>0{ var r *Room for _,v := range this.roomHash{ fmt.Println(consumer.Name +" buy "+ v.Name) r = v break } delete(this.roomHash,r.Id) return } this.consumerHash[consumer.Id]=consumer }
定义消费者。
1 2 3 4 5 6 7 8 9 10 11 12
package mediator
import"gopkg.in/mgo.v2/bson"
type Consumer struct{ Id bson.ObjectId Name string }