func main() {
	announce_client.InitAnnounceUDP()
	timestamp.InitTimeStamp()
	cryptowrapper.GenerateRSAKey()
	var c message.CalendarInfo
	//    c.Init(strings.Trim(cmd[0], "\n"))
	c.Init()
	var mul tcpNet.Multicast
	mul.Init(&c)

	reader := bufio.NewReader(os.Stdin)
	commands, _ := reader.ReadString('\n')
	cmd := strings.Split(commands, " ")

	//commands, _ = reader.ReadString('\n')
	for commands != "exit" {
		cmd = strings.Split(commands, " ")
		switch cmd[0] {
		case "CreateGroup":
			mul.AddGroup(strings.Trim(cmd[1], "\n")) //group name
		case "join":
			mul.SendJoinRequest(strings.Trim(cmd[1], "\n"), strings.Trim(cmd[2], "\n"), strings.Trim(cmd[3], "\n")) //dest, group, invite_code
		case "VoteRequest":
			mul.VoteRequest(strings.Trim(cmd[1], "\n"), strings.Trim(cmd[2], "\n")) //(mem, group string)
		case "VoteReply":
			mul.VoteReply(strings.Trim(cmd[1], "\n"), strings.Trim(cmd[2], "\n")) //dest, decision string
		case "csRequest":
			mul.LockRequest(strings.Trim(cmd[1], "\n")) //group
		case "csRelease":
			mul.LockRelease(strings.Trim(cmd[1], "\n"))
		case "operation":
			mul.UpdateSend(strings.Trim(cmd[1], "\n"), strings.Trim(cmd[2], "\n")) //group, content
		// case "uni": mul.SendUniMessage("lock_request", strings.Trim(cmd[1], "\n"),strings.Trim(cmd[2], "\n"),5000)
		// case "multi": mul.SendMulticast("lock_reply", strings.Trim(cmd[1], "\n"),strings.Trim(cmd[2], "\n"),5000)
		// case "request": mul.LockRequest(strings.Trim(cmd[1], "\n"))
		// case "release": mul.LockRelease(strings.Trim(cmd[1], "\n"))
		// case "join": mul.VoteRequest(strings.Trim(cmd[1], "\n"), strings.Trim(cmd[2], "\n"))
		// case "info": go mul.SendInfo(strings.Trim(cmd[1], "\n"), strings.Trim(cmd[2], "\n"))
		case "exit":
			mul.Info.WriteToFile("communication/message/config.txt")
			os.Exit(0)
		default:
			mul.Info.WriteToFile("communication/message/config.txt")
			os.Exit(0)
		}
		commands, _ = reader.ReadString('\n')
		commands = strings.Trim(commands, "\n")
		fmt.Println(commands)
	}

}