00033 :
00034 CMS (bufline, procline, set_to_server)
00035 {
00036 my_node = (BUFFERS_LIST_NODE *) NULL;
00037 lm_addr = NULL;
00038
00039 if (set_to_master == 1)
00040 {
00041 is_local_master = 1;
00042 }
00043 if (set_to_master == -1)
00044 {
00045 is_local_master = 0;
00046 }
00047
00048 if (is_local_master)
00049 {
00050 if (buffers_list == NULL)
00051 {
00052 buffers_list = new RCS_LINKED_LIST;
00053 }
00054 if (buffers_list == NULL)
00055 {
00056 rcs_print_error ("LOCMEM: Can't create buffers_list.\n");
00057 status = CMS_CREATE_ERROR;
00058 return;
00059 }
00060 my_node = new BUFFERS_LIST_NODE;
00061 lm_addr = my_node->addr = DEBUG_MALLOC (size);
00062 if (my_node == NULL || lm_addr == NULL)
00063 {
00064 rcs_print_error ("Can't malloc needed space.\n");
00065 status = CMS_CREATE_ERROR;
00066 return;
00067 }
00068 my_node->size = size;
00069 strcpy (my_node->name, BufferName);
00070 memset (my_node->addr, 0, size);
00071 buffer_id = buffers_list->store_at_tail (my_node, sizeof (my_node), 0);
00072 return;
00073 }
00074
00075 if (buffers_list == NULL)
00076 {
00077 rcs_print_error ("LOCMEM: buffers_list is NULL.\n");
00078 status = CMS_NO_MASTER_ERROR;
00079 return;
00080 }
00081
00082
00083 my_node = (BUFFERS_LIST_NODE *) buffers_list->get_head ();
00084 while (my_node != NULL)
00085 {
00086 if (!strcmp (BufferName, my_node->name))
00087 {
00088
00089 if (my_node->size != size)
00090 {
00091 rcs_print_error ("LOCMEM - size mismatch for buffer %s.\n",
00092 BufferName);
00093 status = CMS_CONFIG_ERROR;
00094 return;
00095 }
00096 buffer_id = buffers_list->get_current_id ();
00097 lm_addr = my_node->addr;
00098 return;
00099 }
00100 my_node = (BUFFERS_LIST_NODE *) buffers_list->get_next ();
00101 }
00102 rcs_print_error ("LOCMEM: buffer not found on buffers_list.\n");
00103 status = CMS_NO_MASTER_ERROR;
00104 return;
00105
00106 }