Skip to content

Commit 6583bfd

Browse files
committed
Remove Reflection Code
1 parent 6e0f08d commit 6583bfd

38 files changed

+135
-132
lines changed

Libraries/RosBridgeClient/Communicators.cs

+8-11
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ limitations under the License.
1515

1616
using Newtonsoft.Json.Linq;
1717
using System;
18-
using System.Reflection;
1918

2019
namespace RosSharp.RosBridgeClient
2120
{
@@ -25,13 +24,11 @@ namespace RosSharp.RosBridgeClient
2524

2625
internal abstract class Communicator
2726
{
28-
public static string GetRosName<T>() where T : Message
27+
public static string GetRosName<T>() where T : Message, new()
2928
{
30-
#if !WINDOWS_UWP
31-
return (string)typeof(T).GetField("RosMessageName").GetRawConstantValue();
32-
#else
33-
return (string)typeof(T).GetTypeInfo().GetDeclaredField("RosMessageName").GetValue(null);
34-
#endif
29+
string name = new T().RosMessageName;
30+
Output.Log(name);
31+
return name;
3532
}
3633
}
3734
internal abstract class Publisher : Communicator
@@ -47,7 +44,7 @@ internal Unadvertisement Unadvertise()
4744
}
4845
}
4946

50-
internal class Publisher<T> : Publisher where T : Message
47+
internal class Publisher<T> : Publisher where T : Message, new()
5148
{
5249
internal override string Id { get; }
5350
internal override string Topic { get; }
@@ -79,7 +76,7 @@ internal Unsubscription Unsubscribe()
7976
}
8077
}
8178

82-
internal class Subscriber<T> : Subscriber where T : Message
79+
internal class Subscriber<T> : Subscriber where T : Message, new()
8380
{
8481
internal override string Id { get; }
8582
internal override string Topic { get; }
@@ -113,7 +110,7 @@ internal ServiceUnadvertisement UnadvertiseService()
113110
}
114111
}
115112

116-
internal class ServiceProvider<Tin, Tout> : ServiceProvider where Tin : Message where Tout : Message
113+
internal class ServiceProvider<Tin, Tout> : ServiceProvider where Tin : Message, new() where Tout : Message
117114
{
118115
internal override string Service { get; }
119116
internal ServiceCallHandler<Tin, Tout> ServiceCallHandler;
@@ -125,7 +122,7 @@ internal ServiceProvider(string service, ServiceCallHandler<Tin, Tout> serviceCa
125122
}
126123

127124
internal override Communication Respond(string id, JToken args = null)
128-
{
125+
{
129126
bool isSuccess = ServiceCallHandler.Invoke(args.ToObject<Tin>(), out Tout result);
130127
return new ServiceResponse<Tout>(id, Service, result, isSuccess);
131128
}

Libraries/RosBridgeClient/Message.cs

+4
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,13 @@ You may obtain a copy of the License at
1313
limitations under the License.
1414
*/
1515

16+
using Newtonsoft.Json;
17+
1618
namespace RosSharp.RosBridgeClient
1719
{
1820
public abstract class Message
1921
{
22+
[JsonIgnore]
23+
public string RosMessageName;
2024
}
2125
}

Libraries/RosBridgeClient/Messages/Geometry/Accel.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@ namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class Accel : Message
2121
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/Accel";
2422
public Vector3 linear;
2523
public Vector3 angular;
2624
public Accel()
2725
{
2826
linear = new Vector3();
2927
angular = new Vector3();
28+
RosMessageName = "geometry_msgs/Accel";
3029
}
3130
}
3231
}

Libraries/RosBridgeClient/Messages/Geometry/Point.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class Point : Message
2121
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/Point";
2422
public float x;
2523
public float y;
2624
public float z;
@@ -29,6 +27,7 @@ public Point()
2927
x = 0;
3028
y = 0;
3129
z = 0;
30+
RosMessageName = "geometry_msgs/Point";
3231
}
3332
}
3433
}

Libraries/RosBridgeClient/Messages/Geometry/PointStamped.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,14 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class PointStamped : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/PointStamped";
21+
{
2422
public Standard.Header header;
2523
public Point point;
2624
public PointStamped()
2725
{
2826
header = new Standard.Header();
2927
point = new Point();
28+
RosMessageName = "geometry_msgs/PointStamped";
3029
}
3130
}
3231
}

Libraries/RosBridgeClient/Messages/Geometry/Pose.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,14 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class Pose : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/Pose";
21+
{
2422
public Point position;
2523
public Quaternion orientation;
2624
public Pose()
2725
{
2826
position = new Point();
2927
orientation = new Quaternion();
28+
RosMessageName = "geometry_msgs/Pose";
3029
}
3130
}
3231

Libraries/RosBridgeClient/Messages/Geometry/PoseStamped.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,14 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class PoseStamped : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/PoseStamped";
21+
{
2422
public Standard.Header header;
2523
public Pose pose;
2624
public PoseStamped()
2725
{
2826
header = new Standard.Header();
2927
pose = new Pose();
28+
RosMessageName = "geometry_msgs/PoseStamped";
3029
}
3130
}
3231
}

Libraries/RosBridgeClient/Messages/Geometry/PoseWithCovariance.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@ namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class PoseWithCovariance : Message
2121
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/PoseWithCovariance";
2422
public Pose pose;
2523
public float[] covariance;
2624
public PoseWithCovariance()
2725
{
2826
pose = new Pose();
2927
covariance = new float[36];
28+
RosMessageName = "geometry_msgs/PoseWithCovariance";
3029
}
3130
}
3231
}

Libraries/RosBridgeClient/Messages/Geometry/Quaternion.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@ limitations under the License.
1717

1818
namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
20-
public class Quaternion : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/Quaternion";
20+
public class Quaternion : Message {
21+
2422
public float x;
2523
public float y;
2624
public float z;
@@ -31,6 +29,7 @@ public Quaternion()
3129
y = 0;
3230
z = 0;
3331
w = 0;
32+
RosMessageName = "geometry_msgs/Quaternion";
3433
}
3534
}
3635
}

Libraries/RosBridgeClient/Messages/Geometry/Transform.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,13 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class Transform : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/Transform";
21+
{
2422
public Vector3 translation;
2523
public Quaternion rotation;
2624
public Transform()
2725
{
2826
translation = new Vector3();
29-
rotation = new Quaternion();
27+
rotation = new Quaternion(); RosMessageName = "geometry_msgs/Transform";
3028
}
3129
}
3230
}

Libraries/RosBridgeClient/Messages/Geometry/TransformStamped.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,15 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class TransformStamped : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/TransformStamped";
21+
{
2422
public string child_frame_id;
2523
public Standard.Header header;
2624
public Transform transform;
2725
public TransformStamped()
2826
{
2927
header = new Standard.Header();
3028
child_frame_id = "";
31-
transform = new Transform();
29+
transform = new Transform(); RosMessageName = "geometry_msgs/TransformStamped";
3230
}
3331
}
3432
}

Libraries/RosBridgeClient/Messages/Geometry/Twist.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,13 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class Twist : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/Twist";
21+
{
2422
public Vector3 linear;
2523
public Vector3 angular;
2624
public Twist()
2725
{
2826
linear = new Vector3();
29-
angular = new Vector3();
27+
angular = new Vector3(); RosMessageName = "geometry_msgs/Twist";
3028
}
3129
}
3230
}

Libraries/RosBridgeClient/Messages/Geometry/TwistWithCovariance.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,13 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class TwistWithCovariance : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/TwistWithCovariance";
21+
{
2422
public Twist twist;
2523
public float[] covariance;
2624
public TwistWithCovariance()
2725
{
2826
twist = new Twist();
29-
covariance = new float[36];
27+
covariance = new float[36]; RosMessageName = "geometry_msgs/TwistWithCovariance";
3028
}
3129
}
3230
}

Libraries/RosBridgeClient/Messages/Geometry/Vector3.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,15 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Geometry
1919
{
2020
public class Vector3 : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "geometry_msgs/Vector3";
21+
{
2422
public float x;
2523
public float y;
2624
public float z;
2725
public Vector3()
2826
{
2927
x = 0f;
3028
y = 0f;
31-
z = 0f;
29+
z = 0f; RosMessageName = "geometry_msgs/Vector3";
3230
}
3331
}
3432
}

Libraries/RosBridgeClient/Messages/Navigation/MapMetaData.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Navigation
1919
{
2020
public class MapMetaData : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "nav_msgs/MapMetaData";
21+
{
2422
public Standard.Time map_load_time;
2523
public float resolution;
2624
public uint width;
@@ -33,7 +31,7 @@ public MapMetaData()
3331
resolution = 0;
3432
width = 0;
3533
height = 0;
36-
origin = new Geometry.Pose();
34+
origin = new Geometry.Pose(); RosMessageName = "nav_msgs/MapMetaData";
3735
}
3836
}
3937
}

Libraries/RosBridgeClient/Messages/Navigation/OccupancyGrid.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,15 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Navigation
1919
{
2020
public class OccupancyGrid : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "nav_msgs/OccupancyGrid";
21+
{
2422
public Standard.Header header;
2523
public MapMetaData info;
2624
public sbyte[] data;
2725
public OccupancyGrid()
2826
{
2927
header = new Standard.Header();
3028
info = new MapMetaData();
31-
data = null;
29+
data = null; RosMessageName = "nav_msgs/OccupancyGrid";
3230
}
3331
}
3432
}

Libraries/RosBridgeClient/Messages/Navigation/Odometry.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Navigation
1919
{
2020
public class Odometry : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "nav_msgs/Odometry";
21+
{
2422
public Standard.Header header;
2523
public string child_frame_id;
2624
public Geometry.PoseWithCovariance pose;
@@ -30,7 +28,7 @@ public Odometry()
3028
header = new Standard.Header();
3129
child_frame_id = "";
3230
pose = new Geometry.PoseWithCovariance();
33-
twist = new Geometry.TwistWithCovariance();
31+
twist = new Geometry.TwistWithCovariance(); RosMessageName = "nav_msgs/Odometry";
3432
}
3533
}
3634
}

Libraries/RosBridgeClient/Messages/Sensor/CompressedImage.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,15 @@ limitations under the License.
1818
namespace RosSharp.RosBridgeClient.Messages.Sensor
1919
{
2020
public class CompressedImage : Message
21-
{
22-
[JsonIgnore]
23-
public const string RosMessageName = "sensor_msgs/CompressedImage";
21+
{
2422
public Standard.Header header;
2523
public string format;
2624
public byte[] data;
2725
public CompressedImage()
2826
{
2927
header = new Standard.Header();
3028
format = "";
31-
data = new byte[0];
29+
data = new byte[0]; RosMessageName = "sensor_msgs/CompressedImage";
3230
}
3331
}
3432
}

0 commit comments

Comments
 (0)