@@ -236,15 +236,55 @@ public DurationMessage(uint secs, uint nsecs) {
236236
237237
238238 /// <summary>
239- /// Converts to seconds
239+ /// Converts to/from seconds
240240 /// </summary>
241241 /// <value></value>
242242 public double Seconds {
243243 get {
244244 double sec = ( double ) this . secs + ( ( double ) this . nsecs ) / 1000000000.0 ;
245245 return sec ;
246246 }
247+
248+ set {
249+ this . secs = ( uint ) System . Math . Truncate ( value ) ;
250+ this . nsecs = ( uint ) ( ( value - ( double ) this . secs ) * 1000000000.0 ) ;
251+ }
252+ }
253+
254+ public static DurationMessage operator + ( DurationMessage lhs , DurationMessage rhs ) {
255+ return new DurationMessage ( lhs . secs + rhs . secs , lhs . nsecs + rhs . nsecs ) ;
256+ }
257+
258+ public static DurationMessage operator - ( DurationMessage lhs , DurationMessage rhs ) {
259+ return new DurationMessage ( lhs . secs - rhs . secs , lhs . nsecs - rhs . nsecs ) ;
260+ }
261+
262+ public static bool operator < ( DurationMessage lhs , DurationMessage rhs ) {
263+ if ( lhs . secs < rhs . secs ) {
264+ return true ;
265+ } else if ( lhs . secs == rhs . secs && lhs . nsecs < rhs . nsecs ) {
266+ return true ;
267+ }
268+ return false ;
247269 }
270+
271+ public static bool operator > ( DurationMessage lhs , DurationMessage rhs ) {
272+ if ( lhs . secs > rhs . secs ) {
273+ return true ;
274+ } else if ( lhs . secs == rhs . secs && lhs . nsecs > rhs . nsecs ) {
275+ return true ;
276+ }
277+ return false ;
278+ }
279+
280+ public static bool operator == ( DurationMessage lhs , DurationMessage rhs ) {
281+ return lhs . secs == rhs . secs && lhs . nsecs == rhs . nsecs ;
282+ }
283+
284+ public static bool operator != ( DurationMessage lhs , DurationMessage rhs ) {
285+ return lhs . secs != rhs . secs || lhs . nsecs != rhs . nsecs ;
286+ }
287+
248288 }
249289
250290}
0 commit comments