コード例 #1
0
        //
        public bool Deserialize(ref MatchingResponse element)
        {
            if (GetDataSize() == 0)
            {
                // 데이터가 설정되어 있지 않습니다.
                return(false);
            }

            bool ret = true;

            int result = 0;

            ret           &= Deserialize(ref result);
            element.result = (MatchingResult)result;

            int request = 0;

            ret            &= Deserialize(ref request);
            element.request = (MatchingRequestId)request;

            ret &= Deserialize(ref element.roomId);
            ret &= Deserialize(ref element.name, MatchingResponse.roomNameLength);
            ret &= Deserialize(ref element.members);

            return(ret);
        }
コード例 #2
0
        public ResponseWrapper <MatchingResponse> PutMatchingResponse(MatchingResponse matchingResponse)
        {
            MatchingResponse OldResponse = _Ctx.MatchingResponse.Find(matchingResponse.Id);

            if (OldResponse == null)
            {
                return new ResponseWrapper <MatchingResponse>
                       {
                           state = HttpStatusCode.NotFound,
                           error = "Fehler: es wurde versucht eine existierende Matching Response zu überschreiben. ID konnte allerdings nicht gefunden werden."
                       }
            }
            ;
            OldResponse.pointscategories      = matchingResponse.pointscategories;
            OldResponse.pointscertificates    = matchingResponse.pointscertificates;
            OldResponse.pointsdatalocations   = matchingResponse.pointsdatalocations;
            OldResponse.pointsdeploymentinfos = matchingResponse.pointsdeploymentinfos;
            OldResponse.pointsmodels          = matchingResponse.pointsmodels;
            OldResponse.pointsproviders       = matchingResponse.pointsproviders;
            OldResponse.pointsfeatures        = matchingResponse.pointsfeatures;
            OldResponse.pointsstoragetype     = matchingResponse.pointsstoragetype;
            _Ctx.SaveChanges();
            return(new ResponseWrapper <MatchingResponse>
            {
                state = HttpStatusCode.OK,
                content = matchingResponse
            });
        }
コード例 #3
0
ファイル: Packet.cs プロジェクト: jongwony/NetworkProgramming
        //
        public bool Deserialize(ref MatchingResponse element)
        {
            if (GetDataSize() == 0)
            {
                // 데이터가 설정되지 않았다.
                return(false);
            }

            bool ret = true;

            // 요청 결과 int -> enum
            int result = 0;

            ret           &= Deserialize(ref result);
            element.result = (MatchingResult)result;

            // 요청 내용 int -> enum
            int request = 0;

            ret            &= Deserialize(ref request);
            element.request = (MatchingRequestId)request;

            // 응답 방 ID
            ret &= Deserialize(ref element.roomId);

            // 방 이름 string(name, size)
            ret &= Deserialize(ref element.name, MatchingResponse.roomNameLength);

            // 참가 인원
            ret &= Deserialize(ref element.members);

            return(ret);
        }
コード例 #4
0
ファイル: Packet.cs プロジェクト: jongwony/NetworkProgramming
        //
        public bool Serialize(MatchingResponse packet)
        {
            bool ret = true;

            // 요청 결과 enum -> int
            int result = (int)packet.result;

            ret &= Serialize(result);

            // 요청 내용 enum -> int
            int request = (int)packet.request;

            ret &= Serialize(request);

            // 응답 방 ID
            ret &= Serialize(packet.roomId);

            // 방 이름 string(name, size)
            ret &= Serialize(packet.name, MatchingResponse.roomNameLength);

            // 참가 인원
            ret &= Serialize(packet.members);

            return(ret);
        }
コード例 #5
0
 public ResponseWrapper <MatchingResponse> PostMatchingResponse(MatchingResponse matchingResponse)
 {
     _Ctx.MatchingResponse.Add(matchingResponse);
     _Ctx.SaveChanges();
     return(new ResponseWrapper <MatchingResponse>
     {
         state = HttpStatusCode.OK,
         content = matchingResponse
     });
 }
コード例 #6
0
        public IHttpActionResult PutMatchingResponse([FromBody] MatchingResponse response)
        {
            ResponseWrapper <MatchingResponse> result = _Repo.PutMatchingResponse(response);

            if (result.error != null)
            {
                return(Content(result.state, result.error));
            }
            return(Content(result.state, result.content));
        }
コード例 #7
0
ファイル: MatchingServer.cs プロジェクト: wyuurla/006772
    void JoinRoom(int node, int roomId)
    {
        Debug.Log("ReceiveJoinRoomPacket");

        MatchingResponse response = new MatchingResponse();

        response.roomId  = -1;
        response.request = MatchingRequestId.JoinRoom;

        int memberNum = 0;

        if (rooms_.ContainsKey(roomId) == true)
        {
            RoomContent room = rooms_[roomId];

            m_members[node].roomId = roomId;

            response.result = MatchingResult.MemberIsFull;
            for (int i = 0; i < maxMemberNum; ++i)
            {
                if (room.members[i] == -1)
                {
                    // 자리가 있음.
                    room.members[i] = node;
                    rooms_[roomId]  = room;
                    response.result = MatchingResult.Success;
                    response.roomId = roomId;
                    response.name   = room.name;
                    break;
                }
            }

            // 정원 체크.
            for (int i = 0; i < room.members.Length; ++i)
            {
                if (room.members[i] != -1)
                {
                    ++memberNum;
                }
            }
        }
        else
        {
            Debug.Log("JoinRoom failed.");
            response.result = MatchingResult.RoomIsGone;
            response.name   = "";
        }

        MatchingResponsePacket packet = new MatchingResponsePacket(response);

        network_.SendReliable <MatchingResponse>(node, packet);
    }
コード例 #8
0
ファイル: MatchingServer.cs プロジェクト: wyuurla/006772
    void CreateRoom(int node, string name, int level)
    {
        Debug.Log("ReceiveCreateRoomRequest");

        MatchingResponse response = new MatchingResponse();


        response.request = MatchingRequestId.CreateRoom;

        if (rooms_.Count < maxRoomNum)
        {
            RoomContent room = new RoomContent();


            room.roomId = roomIndex;

            room.name = name;

            room.level = level;

            // 자기 자신을 맨앞으로 설정.
            room.members[0] = node;

            m_members[node].roomId = roomIndex;

            rooms_.Add(roomIndex, room);
            ++roomIndex;


            response.result = MatchingResult.Success;
            response.roomId = room.roomId;
            response.name   = "";

            string str = "Request node:" + node + " Created room id:" + response.roomId;
            Debug.Log(str);
        }
        else
        {
            response.result = MatchingResult.RoomIsFull;
            response.roomId = -1;
            Debug.Log("Create room failed.");
        }

        MatchingResponsePacket packet = new MatchingResponsePacket(response);

        network_.SendReliable <MatchingResponse>(node, packet);
    }
コード例 #9
0
        //
        public bool Serialize(MatchingResponse packet)
        {
            bool ret = true;

            int result = (int)packet.result;

            ret &= Serialize(result);

            int request = (int)packet.request;

            ret &= Serialize(request);

            ret &= Serialize(packet.roomId);
            ret &= Serialize(packet.name, MatchingResponse.roomNameLength);
            ret &= Serialize(packet.members);

            return(ret);
        }
コード例 #10
0
        public ResponseWrapper <MatchingResponse> GetMatchingResponseById(int id)
        {
            MatchingResponse OldResponse = _Ctx.MatchingResponse.Find(id);

            if (OldResponse == null)
            {
                return new ResponseWrapper <MatchingResponse>
                       {
                           state = HttpStatusCode.NotFound,
                           error = "Fehler: es wurde versucht eine existierende Matching Response zu löschen. ID konnte allerdings nicht gefunden werden."
                       }
            }
            ;
            return(new ResponseWrapper <MatchingResponse>
            {
                state = HttpStatusCode.OK,
                content = OldResponse
            });
        }
コード例 #11
0
        private async Task <List <RouteWaypoint> > MapboxMatch(List <SyncromaticsWaypoint> syncWaypoints)
        {
            string url = "https://api.mapbox.com/matching/v5/mapbox/driving/";
            List <RouteWaypoint> waypoints = new List <RouteWaypoint>();

            foreach (List <SyncromaticsWaypoint> sepList in SplitList <SyncromaticsWaypoint>(syncWaypoints, 99))
            {
                string coordsForMapbox = "";
                foreach (SyncromaticsWaypoint waypoint in sepList)
                {
                    coordsForMapbox += $"{waypoint.Longitude},{waypoint.Latitude};";
                }

                coordsForMapbox = coordsForMapbox.Trim(';');
                string           mapboxAPI = url + coordsForMapbox + "?annotations=maxspeed&overview=full&geometries=geojson&access_token=pk.eyJ1IjoiZHJlbmdpIiwiYSI6ImNrMzY1NXl4aDAxanMzaHV0Zzlkd2pnZngifQ.L6C_jKfq5UCC5PkLRmFCbQ";
                MatchingResponse response  = await mapboxAPI.GetJsonAsync <MatchingResponse>();

                double distance = 0;
                for (int i = 0; i < response.matchings[0].geometry.coordinates.Count; i++)
                {
                    List <double> coord     = response.matchings[0].geometry.coordinates[i];
                    List <double> lastCoord = response.matchings[0].geometry.coordinates[i - 1];

                    if (i != 0)
                    {
                        distance += new Coordinate(lastCoord[1], lastCoord[0]).DistanceTo(new Coordinate(coord[1], coord[0]));
                    }
                    waypoints.Add(new RouteWaypoint(coord[1], coord[0], distance));
                }
            }

            //to prevent a "gap" showing on the map, we're going to add the first waypoint again to the last, mapbox will hopefully match it
            if (waypoints[waypoints.Count - 1].Coordinate.Latitude != waypoints[0].Coordinate.Latitude || waypoints[waypoints.Count - 1].Coordinate.Longitude != waypoints[0].Coordinate.Longitude)
            {
                waypoints.Add(waypoints[0]);
            }

            return(waypoints);
        }
コード例 #12
0
    //
    // 패킷 수신 처리.
    //

    void OnReceiveMatchingResponse(int node, PacketId id, byte[] data)
    {
        MatchingResponsePacket packet   = new MatchingResponsePacket(data);
        MatchingResponse       response = packet.GetPacket();

        string str = "ReceiveMatchingResponse:" + response.request;

        Debug.Log(str);

        switch (response.request)
        {
        case MatchingRequestId.CreateRoom:
            CreateRoomResponse(response.result, response.roomId);
            break;

        case MatchingRequestId.JoinRoom:
            JoinRoomResponse(response.result, response.roomId);
            break;

        default:
            Debug.Log("Unknown request.");
            break;
        }
    }
コード例 #13
0
ファイル: MatchingServer.cs プロジェクト: fotoco/006772
	void JoinRoom(int node, int roomId)
	{
		Debug.Log("ReceiveJoinRoomPacket");

		MatchingResponse response = new MatchingResponse();

		response.roomId = -1;
		response.request = MatchingRequestId.JoinRoom;

		int memberNum = 0;
		if (rooms_.ContainsKey(roomId) == true) {
			RoomContent room = rooms_[roomId];

			m_members[node].roomId = roomId;
			
			response.result = MatchingResult.MemberIsFull;
			for (int i = 0; i < maxMemberNum; ++i) {
				if (room.members[i] == -1) {
					// 자리가 있음.
					room.members[i] = node;
					rooms_[roomId] = room;
					response.result = MatchingResult.Success;
					response.roomId = roomId;
					response.name = room.name;
					break;
				}
			}

			// 정원 체크.
			for (int i = 0; i < room.members.Length; ++i) {
				if (room.members[i] != -1) {
					++memberNum;
				}
			}
		}
		else {
			Debug.Log("JoinRoom failed.");
			response.result = MatchingResult.RoomIsGone;
			response.name = "";
		}
		
		MatchingResponsePacket packet = new MatchingResponsePacket(response);	
		
		network_.SendReliable<MatchingResponse>(node, packet);
	}
コード例 #14
0
ファイル: MatchingServer.cs プロジェクト: fotoco/006772
	void CreateRoom(int node, string name, int level)
	{
		Debug.Log("ReceiveCreateRoomRequest");

		MatchingResponse response = new MatchingResponse();


		response.request = MatchingRequestId.CreateRoom;

		if (rooms_.Count < maxRoomNum) {

			RoomContent room = new RoomContent();


			room.roomId = roomIndex;

			room.name = name;

			room.level = level;

			// 자기 자신을 맨앞으로 설정.
			room.members[0] = node;
			
			m_members[node].roomId = roomIndex;

			rooms_.Add(roomIndex, room);
			++roomIndex;


			response.result = MatchingResult.Success;
			response.roomId = room.roomId;
			response.name = "";

			string str = "Request node:" + node + " Created room id:" + response.roomId;
			Debug.Log(str);
		}
		else {
			response.result = MatchingResult.RoomIsFull;
			response.roomId = -1;
			Debug.Log("Create room failed.");
		}

		MatchingResponsePacket packet = new MatchingResponsePacket(response);
		
		network_.SendReliable<MatchingResponse>(node, packet);
	}
コード例 #15
0
        new public MatchingResponse MatchWithSearchVector(SearchVector Search)
        {
            MatchingResponse Output = base.MatchWithSearchVector(Search);

            return(Output);
        }