예제 #1
0
func (Data *Data) Manage_sendball(requete *list.Element, Tab_wd *owm.All_data) {
	rqt := requete.Value.(*protocol.Request)
	eball := Data.Lst_ball.Get_ballbyid(rqt.Spec.(protocol.Send_ball).Id)
	var answer []byte

	if eball != nil && eball.Value.(*ballon.Ball).Check_userPossessed(Data.User) == true {
		user := Data.User.Value.(*users.User)
		ball := eball.Value.(*ballon.Ball)
		RemoveBallPossessed(eball, Data.User)
		ball.Possessed = nil
		ball.Edited = true
		ball.InitCoord(rqt.Coord.Lon, rqt.Coord.Lat, int16(0), Tab_wd, true)
		var message ballon.Message
		message.Id = int32(ball.Messages.Len())
		message.Size = rqt.Spec.(protocol.Send_ball).Octets
		message.Content = rqt.Spec.(protocol.Send_ball).Message
		message.Type = 1
		ball.Messages.PushBack(message)
		/* Begin stats ---- */
		user.Stats.NbrMessage++
		user.Stats.NbrSend++
		Data.Lst_users.GlobalStat.NbrSend++
		Data.Lst_users.GlobalStat.NbrMessage++
		/* End Stats --- */
		answer = Data.Manage_ack(rqt.Rtype, eball.Value.(*ballon.Ball).Id_ball, int32(1))
	} else {
		answer = Data.Manage_ack(rqt.Rtype, rqt.Spec.(protocol.Send_ball).Id, int32(0))
	}
	Data.Lst_asw.PushBack(answer)
}
예제 #2
0
func (Data *Data) Manage_newball(requete *list.Element, Tab_wd *owm.All_data) {
	ball := new(ballon.Ball)
	ball.Stats = new(ballon.StatsBall)
	rqt := requete.Value.(*protocol.Request)
	var newball protocol.New_ball
	var mess ballon.Message
	user := Data.User.Value.(*users.User)

	if user.NbrBallSend < 10 {
		newball = requete.Value.(*protocol.Request).Spec.(protocol.New_ball)
		ball.Id_ball = Data.Lst_ball.Id_max
		Data.Lst_ball.Id_max++
		ball.FlagC = true
		ball.Edited = true
		ball.Title = newball.Title
		ball.Messages = list.New()
		ball.Itinerary = list.New()
		ball.Followers = list.New()
		ball.Checkpoints = list.New()
		mess.Id = 0
		mess.Size = (int32)(len(newball.Message))
		mess.Content = newball.Message
		mess.Type = 1
		ball.Messages.PushFront(mess)
		ball.Date = time.Now()
		ball.Possessed = nil
		ball.Followers.PushFront(Data.User)
		ball.Creator = Data.User
		ball.InitCoord(rqt.Coord.Lon, rqt.Coord.Lat, int16(0), Tab_wd, true)
		eball := Data.Lst_ball.Blist.PushBack(ball)
		user := Data.User.Value.(*users.User)
		user.Followed.PushBack(eball)
		user.NbrBallSend++
		// Begin Stats
		user.Stats.NbrMessage++
		user.Stats.NbrBallCreate++
		user.Stats.NbrSend++
		user.Stats.NbrFollow++
		Data.Lst_users.GlobalStat.NbrBallCreate++
		Data.Lst_users.GlobalStat.NbrSend++
		Data.Lst_users.GlobalStat.NbrFollow++
		Data.Lst_users.GlobalStat.NbrMessage++
		ball.Stats.CreationDate = time.Now()
		ball.Stats.CoordCreated = new(ballon.Coordinate)
		ball.Stats.CoordCreated.Lon = rqt.Coord.Lon
		ball.Stats.CoordCreated.Lat = rqt.Coord.Lat
		ball.Stats.NbrFollow++
		// End Stats
		answer := Data.Manage_ack(rqt.Rtype, ball.Id_ball, int32(1))
		Data.Lst_asw.PushBack(answer)
	} else {
		answer := Data.Manage_ack(rqt.Rtype, 0, int32(0))
		Data.Lst_asw.PushBack(answer)
	}
}
예제 #3
0
/* CREER UN BALLON POUR FAIRE DES TESTS */
func CreateDataToDebug(lball *ballon.All_ball, luser *users.All_users, tabwd *owm.All_data) error {
	//	lball.Id_max += 6
	/* Get USER */
	//	user := luser.Ulist.Front()
	//	if user != nil {
	//		createBall1000(lball, user, tabwd)
	//	}
	//	euser := luser.Ulist.Front()

	/* END CREATE USER -- CREATE CHECKPOINT */

	//		tmp_lst := list.New()
	var check_test0 ballon.Checkpoint
	var check_test1 ballon.Checkpoint
	var check_test2 ballon.Checkpoint
	var check_test3 ballon.Checkpoint
	var check_test4 ballon.Checkpoint
	var check_test5 ballon.Checkpoint

	check_test0.Coord.Lon = 2.316055
	check_test0.Coord.Lat = 48.833086
	check_test0.Date = time.Now()

	check_test1.Coord.Lon = 2.316065
	check_test1.Coord.Lat = 48.833586
	check_test1.Date = time.Now()

	check_test2.Coord.Lon = 2.30810777
	check_test2.Coord.Lat = 48.919253
	check_test2.Date = time.Now()

	check_test3.Coord.Lon = 2.32386229
	check_test3.Coord.Lat = 48.8851832
	check_test3.Date = time.Now()

	check_test4.Coord.Lon = 2.316045
	check_test4.Coord.Lat = 48.833986
	check_test4.Date = time.Now()

	check_test5.Coord.Lon = 2.3080535
	check_test5.Coord.Lat = 48.910242
	check_test5.Date = time.Now()

	/* END CHECKPOINT -- BEGIN COORDINATE */

	var Coord0 ballon.Coordinate
	var Coord1 ballon.Coordinate
	var Coord2 ballon.Coordinate
	var Coord3 ballon.Coordinate
	var Coord4 ballon.Coordinate
	var Coord5 ballon.Coordinate

	//2 | 48
	Coord0.Lon = 2.3080535
	Coord0.Lat = 48.910242

	Coord1.Lon = 2.316055
	Coord1.Lat = 48.833086

	Coord2.Lon = 2.316065
	Coord2.Lat = 48.833586

	Coord3.Lon = 2.352222
	Coord3.Lat = 48.856614

	Coord4.Lon = 2.3088211
	Coord4.Lat = 48.918361

	Coord5.Lon = 2.316045
	Coord5.Lat = 48.833986

	/* END COORDINATE -- BEGIN MESSAGE */

	mmp2 := list.New()
	mmp := list.New()
	mmp1 := list.New()
	var message0 ballon.Message
	var message1 ballon.Message
	var message2 ballon.Message
	var message3 ballon.Message

	message0.Id = 0
	message0.Size = 34
	message0.Content = "Coucou les gens, message0. ID 0..."
	fmt.Println("Taille du message: ", len(message0.Content))
	message0.Type = 1

	message1.Id = 1
	message1.Size = 33
	message1.Content = "Coucou les gens, message1. Id 1.."
	fmt.Println("Taille du message: ", len(message1.Content))
	message0.Type = 1
	message1.Type = 1

	message2.Id = 2
	message2.Size = 32
	message2.Content = "Coucou les gens, message2. Id 2."
	fmt.Println("Taille du message: ", len(message2.Content))
	message0.Type = 1
	message2.Type = 1

	message3.Id = 3
	message3.Size = 31
	message3.Content = "Coucou les gens, message3. Id 3"
	fmt.Println("Taille du message: ", len(message3.Content))
	message0.Type = 1
	message3.Type = 1

	mmp.PushBack(message0)
	mmp.PushBack(message3)
	mmp1.PushBack(message0)
	mmp1.PushBack(message3)
	mmp2.PushBack(message0)
	mmp2.PushBack(message1)
	mmp2.PushBack(message2)

	/* END MESSAGE -- BEGIN BALLON */

	ball0 := new(ballon.Ball)
	ball1 := new(ballon.Ball)
	ball2 := new(ballon.Ball)
	ball3 := new(ballon.Ball)
	ball4 := new(ballon.Ball)
	ball5 := new(ballon.Ball)

	ball0.Id_ball = 0
	ball0.Edited = false
	ball0.Itinerary = list.New()
	ball0.Title = "toto"
	//	ball0.Coord = tmp_lst.PushBack(check_test0)
	ball0.Wind = ballon.Wind{}
	ball0.Messages = mmp
	ball0.Date = time.Now()
	ball0.Checkpoints = list.New()
	ball0.Coord = ball0.Checkpoints.PushBack(check_test0)
	ball0.Checkpoints.Init()
	ball0.Scoord = ball0.Coord
	ball0.Itinerary = list.New()
	ball0.Itinerary.PushBack(ball0.Coord.Value.(ballon.Checkpoint))
	ball0.Possessed = nil
	ball0.Followers = list.New()
	//	ball0.Creator = euser
	ball0.Stats = new(ballon.StatsBall)
	ball0.Stats.CreationDate = time.Now()
	ball0.Stats.CoordCreated = &Coord0

	ball1.Id_ball = 1
	ball1.Edited = false
	ball1.Itinerary = list.New()
	ball1.Title = "tata"
	//	ball1.Coord = tmp_lst.PushBack(check_test1)
	ball1.Wind = ballon.Wind{}
	ball1.Messages = mmp1
	ball1.Date = time.Now()
	ball1.Checkpoints = list.New()
	ball1.Coord = ball1.Checkpoints.PushBack(check_test1)
	ball1.Checkpoints.Init()
	ball1.Scoord = ball1.Coord
	ball1.Itinerary = list.New()
	ball1.Itinerary.PushBack(ball1.Coord.Value.(ballon.Checkpoint))
	//	ball1.Checkpoints = list.New()
	//	ball1.Coord = ball1.Checkpoints.PushBack(check_test1)
	ball1.Possessed = nil
	ball1.Followers = list.New()
	//	ball1.Creator = euser
	ball1.Stats = new(ballon.StatsBall)
	ball1.Stats.CreationDate = time.Now()
	ball1.Stats.CoordCreated = &Coord1

	ball2.Id_ball = 2
	ball2.Edited = false
	ball2.Itinerary = list.New()
	ball2.Title = "tutu"
	//	ball2.Coord = tmp_lst.PushBack(check_test2)
	ball2.Wind = ballon.Wind{}
	ball2.Messages = mmp
	ball2.Date = time.Now()
	//	ball2.Checkpoints = list.New()
	ball2.Possessed = nil
	ball2.Followers = list.New()
	//	ball2.Creator = euser
	ball2.Checkpoints = list.New()
	ball2.Coord = ball2.Checkpoints.PushBack(check_test2)
	ball2.Checkpoints.Init()
	ball2.Scoord = ball2.Coord
	ball2.Itinerary = list.New()
	ball2.Itinerary.PushBack(ball2.Coord.Value.(ballon.Checkpoint))
	//	ball2.Checkpoints = list.New()
	//	ball2.Coord = ball2.Checkpoints.PushBack(check_test2)
	ball2.Stats = new(ballon.StatsBall)
	ball2.Stats.CreationDate = time.Now()
	ball2.Stats.CoordCreated = &Coord2

	ball3.Id_ball = 3
	ball3.Edited = false
	ball3.Itinerary = list.New()
	ball3.Title = "tete"
	//	ball3.Coord = tmp_lst.PushBack(check_test3)
	ball3.Wind = ballon.Wind{}
	ball3.Messages = mmp
	ball3.Date = time.Now()
	//	ball3.Checkpoints = list.New()
	ball3.Checkpoints = list.New()
	ball3.Coord = ball3.Checkpoints.PushBack(check_test3)
	ball3.Checkpoints.Init()
	ball3.Scoord = ball3.Coord
	ball3.Itinerary = list.New()
	ball3.Itinerary.PushBack(ball3.Coord.Value.(ballon.Checkpoint))
	//	ball3.Checkpoints = list.New()
	//	ball3.Coord = ball3.Checkpoints.PushBack(check_test3)
	ball3.Possessed = nil
	ball3.Followers = list.New()
	//	ball3.Creator = euser
	ball3.Stats = new(ballon.StatsBall)
	ball3.Stats.CreationDate = time.Now()
	ball3.Stats.CoordCreated = &Coord3

	ball4.Id_ball = 4
	ball4.Edited = false
	ball4.Itinerary = list.New()
	ball4.Title = "tyty"
	//	ball4.Coord = tmp_lst.PushBack(check_test4)
	ball4.Wind = ballon.Wind{}
	ball4.Messages = mmp
	ball4.Date = time.Now()
	//	ball4.Checkpoints = list.New()
	ball4.Checkpoints = list.New()
	ball4.Coord = ball4.Checkpoints.PushBack(check_test4)
	ball4.Checkpoints.Init()
	ball4.Scoord = ball4.Coord
	ball4.Itinerary = list.New()
	ball4.Itinerary.PushBack(ball4.Coord.Value.(ballon.Checkpoint))
	//	ball4.Checkpoints = list.New()
	//	ball4.Coord = ball4.Checkpoints.PushBack(check_test4)
	ball4.Possessed = nil
	ball4.Followers = list.New()
	//	ball4.Creator = euser
	ball4.Stats = new(ballon.StatsBall)
	ball4.Stats.CreationDate = time.Now()
	ball4.Stats.CoordCreated = &Coord4

	ball5.Id_ball = 5
	ball5.Edited = false
	ball5.Itinerary = list.New()
	ball5.Title = "PROUT"
	//	ball5.Coord = tmp_lst.PushBack(check_test5)
	ball5.Wind = ballon.Wind{}
	ball5.Messages = mmp2
	ball5.Date = time.Now()
	//	ball5.Checkpoints = list.New()
	ball5.Checkpoints = list.New()
	ball5.Coord = ball5.Checkpoints.PushBack(check_test5)
	ball5.Checkpoints.Remove(ball5.Coord)
	//	ball5.Checkpoints.Init()
	ball5.Scoord = ball5.Coord
	ball5.Itinerary = list.New()
	ball5.Itinerary.PushBack(ball5.Coord.Value.(ballon.Checkpoint))
	//	ball5.Checkpoints = list.New()
	//	ball5.Coord = ball5.Checkpoints.PushBack(check_test5)

	ball5.Possessed = nil
	ball5.Followers = list.New()
	//	ball5.Creator = euser
	ball5.Stats = new(ballon.StatsBall)
	ball5.Stats.CreationDate = time.Now()
	ball5.Stats.CoordCreated = &Coord5

	// Add balls to list
	/*	euser.Value.(*users.User).Followed.PushBack(lball.Blist.PushBack(ball0))
		euser.Value.(*users.User).Followed.PushBack(lball.Blist.PushBack(ball1))
		euser.Value.(*users.User).Followed.PushBack(lball.Blist.PushBack(ball2))
		euser.Value.(*users.User).Followed.PushBack(lball.Blist.PushBack(ball3))
		euser.Value.(*users.User).Followed.PushBack(lball.Blist.PushBack(ball4))
		euser.Value.(*users.User).Followed.PushBack(lball.Blist.PushBack(ball5))
		euser.Value.(*users.User).Stats.NbrBallCreate = 5
		euser.Value.(*users.User).Stats.NbrSend = 5
		euser.Value.(*users.User).Stats.NbrMessage = 5*/
	lball.Blist.PushBack(ball0)
	lball.Blist.PushBack(ball1)
	lball.Blist.PushBack(ball2)
	lball.Blist.PushBack(ball3)
	lball.Blist.PushBack(ball4)
	lball.Blist.PushBack(ball5)
	// If possible print ball List with Serv.Lst_ball.Print_all_balls()
	//	return er
	return nil
}