// 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); }
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 }); }
// 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); }
// 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); }
public ResponseWrapper <MatchingResponse> PostMatchingResponse(MatchingResponse matchingResponse) { _Ctx.MatchingResponse.Add(matchingResponse); _Ctx.SaveChanges(); return(new ResponseWrapper <MatchingResponse> { state = HttpStatusCode.OK, content = matchingResponse }); }
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)); }
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); }
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); }
// 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); }
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 }); }
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); }
// // 패킷 수신 처리. // 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; } }
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); }
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); }
new public MatchingResponse MatchWithSearchVector(SearchVector Search) { MatchingResponse Output = base.MatchWithSearchVector(Search); return(Output); }