]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
Different solution for dedaling with csects serialization.
authorDario Faggioli <faggioli@gandalf.sssup.it>
Fri, 27 Feb 2009 00:54:12 +0000 (01:54 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Sun, 1 Mar 2009 19:12:48 +0000 (20:12 +0100)
The functions for the de/serialization of the frsh_group_csects_t data
type have been rethinked and rewritten.

Serialization and deserialization of memory areas and function pointers
are still missing, and probably need some more thinking in order to
decide what to do with respect to them.

fres/contract/idl_native.h

index 7c6add1504e80b7716834a98965c5602ebaafa93..4dc28a2eaec3b99498bcd43e3a2cf9b8dd96075b 100644 (file)
@@ -119,29 +119,28 @@ fosa_rel_time_t_deserialize(FORB_CDR_Codec *codec, struct timespec *ts)
 #define frsh_signal_info_t_serialize(x,y) CORBA_long_serialize((x),(y))
 #define frsh_signal_info_t_deserialize(x,y) CORBA_long_deserialize((x),(y))
 
+
+
+  frsh_csect_op_kind_t op_kind;                \
+  frsh_sharedobj_label_t obj_label;    \
+  frsh_rel_time_t wcet;                        \
+  frsh_rel_time_t blocking;            \
+  frsh_csect_op_t op;                  \
+  frsh_memory_areas_t areas;           \
+
 static inline CORBA_boolean
 frsh_memory_area_data_t_serialize
   (FORB_CDR_Codec *codec,
-   const frsh_memory_area_data_t *m)
+   const frsh_memory_area_data_t *d)
 {
-       CORBA_long size, area;
-       size = m->size;
-       area = (CORBA_long) 0; //m->area;
-       if (!CORBA_long_serialize(codec, &size)) return CORBA_FALSE;
-       if (!CORBA_long_serialize(codec, &area)) return CORBA_FALSE;
        return CORBA_TRUE;
 }
 
 static inline CORBA_boolean
 frsh_memory_area_data_t_deserialize
   (FORB_CDR_Codec *codec,
-   frsh_memory_area_data_t *m)
+   frsh_memory_area_data_t *d)
 {
-       CORBA_long size, area;
-       if (!CORBA_long_deserialize(codec, &size)) return CORBA_FALSE;
-       if (!CORBA_long_deserialize(codec, &area)) return CORBA_FALSE;
-       m->size = size;
-       m->area = (void*) NULL; //area;
        return CORBA_TRUE;
 }
 
@@ -150,14 +149,6 @@ frsh_memory_areas_t_serialize
   (FORB_CDR_Codec *codec,
    const frsh_memory_areas_t *a)
 {
-       CORBA_long i, size;
-       CORBA_boolean ret;
-       size = a->size;
-       if (!CORBA_long_serialize(codec, &size)) return CORBA_FALSE;
-       for (i = 0; i < FRSH_MAX_N_MEMORY_AREAS; i++) {
-               ret = frsh_memory_area_data_t_serialize(codec, &a->memory_areas[i]);
-               if (ret == CORBA_FALSE) return ret;
-       }
        return CORBA_TRUE;
 }
 
@@ -166,14 +157,6 @@ frsh_memory_areas_t_deserialize
   (FORB_CDR_Codec *codec,
    frsh_memory_areas_t *a)
 {
-       CORBA_long i, size;
-       CORBA_boolean ret;
-       if (!CORBA_long_deserialize(codec, &size)) return CORBA_FALSE;
-       for (i = 0; i < FRSH_MAX_N_MEMORY_AREAS; i++) {
-               ret = frsh_memory_area_data_t_deserialize(codec, &a->memory_areas[i]);
-               if (ret == CORBA_FALSE) return ret;
-       }
-       a->size = size;
        return CORBA_TRUE;
 }
 
@@ -182,6 +165,22 @@ frsh_csect_t_serialize
   (FORB_CDR_Codec *codec,
    const frsh_csect_t *c)
 {
+       CORBA_long op_kind;
+       op_kind = c->op_kind;
+       if (!CORBA_long_serialize(codec, &op_kind))
+               return CORBA_FALSE;
+       if (!CORBA_string_serialize(codec, &c->obj_label))
+               return CORBA_FALSE;
+       if (!fosa_rel_time_t_serialize(codec, &c->wcet))
+               return CORBA_FALSE;
+       if (!fosa_rel_time_t_serialize(codec, &c->blocking))
+               return CORBA_FALSE;
+       /**
+        * TODO:
+        *  since it is a function pointer, c->op is not considered..
+        */
+       if (!frsh_memory_areas_t_serialize(codec, &c->areas))
+               return CORBA_FALSE;
        return CORBA_TRUE;
 }
 
@@ -190,6 +189,22 @@ frsh_csect_t_deserialize
   (FORB_CDR_Codec *codec,
    frsh_csect_t *c)
 {
+       CORBA_long op_kind;
+       if (!CORBA_long_deserialize(codec, &op_kind))
+               return CORBA_FALSE;
+       c->op_kind = op_kind;
+       if (!CORBA_string_deserialize(codec, (CORBA_char**) &c->obj_label))
+               return CORBA_FALSE;
+       if (!fosa_rel_time_t_deserialize(codec, &c->wcet))
+               return CORBA_FALSE;
+       if (!fosa_rel_time_t_deserialize(codec, &c->blocking))
+               return CORBA_FALSE;
+       /**
+        * TODO:
+        *  since it is a function pointer, c->op is not considered.
+        */
+       if (!frsh_memory_areas_t_deserialize(codec, &c->areas))
+               return CORBA_FALSE;
        return CORBA_TRUE;
 }
 
@@ -198,6 +213,13 @@ frsh_csects_group_t_serialize
   (FORB_CDR_Codec *codec,
    const frsh_csects_group_t *g)
 {
+       int i;
+       CORBA_long size;
+       size = g->size;
+       if (!CORBA_long_serialize(codec, &size)) return CORBA_FALSE;
+       for (i = 0; i < g->size; i++)
+               if (!frsh_csect_t_serialize(codec, &g->csects[i]))
+                       return CORBA_FALSE;
        return CORBA_TRUE;
 }
 
@@ -206,6 +228,13 @@ frsh_csects_group_t_deserialize
   (FORB_CDR_Codec *codec,
    frsh_csects_group_t *g)
 {
+       int i;
+       CORBA_long size;
+       if (!CORBA_long_deserialize(codec, &size)) return CORBA_FALSE;
+       g->size = size;
+       for (i = 0; i < g->size; i++)
+               if (!frsh_csect_t_deserialize(codec, &g->csects[i]))
+                       return CORBA_FALSE;
        return CORBA_TRUE;
 }