Changeset 11881


Ignore:
Timestamp:
08/11/11 16:35:28 (13 years ago)
Author:
tbretz
Message:
Updated to DIM V19r24
Location:
trunk/FACT++/dim
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/dim/README_v19.txt

    r11695 r11881  
    11
    2                     DIM version 19.23 Release Notes
     2                    DIM version 19.24 Release Notes
    33
    44Notes 1 and 2 for Unix Users only
     
    1717                Dns </dev/null >& dns.log &
    1818
    19 NOTE 3: The Version Number service provided by servers is now set to 1923.
     19NOTE 3: The Version Number service provided by servers is now set to 1924.
     20
     2108/08/2011
     22Changes for version 19.24:
     23    - The funtion DimInfo::getFormat() never return the correct format of a service, if the first time
     24      it was called, the service was not available, i.e. when called inside a "no_link" callback - Fixed.
     25    - Deleting the last service of a server or stopping a server could generate "Invalid Service Id"
     26      messages from the service that updates DID - Fixed.
     27
    2028
    212915/07/2011
  • trunk/FACT++/dim/dim/dim.h

    r11695 r11881  
    1414#include "dim_common.h"
    1515
    16 #define DIM_VERSION_NUMBER 1923
     16#define DIM_VERSION_NUMBER 1924
    1717
    1818#define MY_LITTLE_ENDIAN        0x1
  • trunk/FACT++/dim/src/diccpp.cxx

    r11695 r11881  
    110110{
    111111        char *def;
     112        int len = 0, new_len;
    112113
    113114        if(itsFormat)
    114115        {
    115                 return itsFormat;
     116                len = strlen(itsFormat)+1;
     117                if(len > 1)
     118                        return itsFormat;
    116119        }
    117120        def = dic_get_format(itsId);
    118 
    119         itsFormat = new char[strlen(def)+1];
     121        new_len = strlen(def)+1;
     122        if(new_len > len)
     123        {
     124                if(itsFormat)
     125                        delete[] itsFormat;
     126                itsFormat = new char[strlen(def)+1];
     127        }
    120128        strcpy(itsFormat, def);
    121129        return itsFormat;
  • trunk/FACT++/dim/src/dis.c

    r11121 r11881  
    10151015{
    10161016        dnsp->updating_service_list = 0;
    1017         dis_update_service(dnsp->dis_service_id);
     1017        if(dnsp->dis_service_id)
     1018                dis_update_service(dnsp->dis_service_id);
    10181019}
    10191020
  • trunk/FACT++/dim/src/examples/test_client.c

    r11121 r11881  
    6464int *tag, *size;
    6565{
     66        char *format;
    6667
     68        format = dic_get_format(0);
     69        printf("Received format = %s %08x, %d\n",format, format, *size);
    6770        if(*tag == 1100)
    6871        {
     
    9194        }
    9295        else
    93                 printf("%s Received %s for Service%03d\n",client_str,buf, *tag);
     96                printf("%s Received %s %08X for Service%03d\n",client_str,buf, buf,*tag);
    9497
    9598/*
     
    121124        {
    122125                sprintf(str,"%s/Service_%03d",argv[2],i);
     126//              dic_info_service( str, TIMED, 10, 0, 0, rout, i,
     127//                        "No Link", 8 );
    123128                dic_info_service( str, TIMED, 10, 0, 0, rout, i,
    124                           "No Link", 8 );
     129                          NULL, 0 );
    125130        }
    126131       
  • trunk/FACT++/dim/src/examples/test_client.cxx

    r11695 r11881  
    3030                int index = 0;
    3131                char **services;
     32                char *format;
    3233//              cout << "Dns Node = " << DimClient::getDnsNode() << endl;
    33                 cout << "Received STRVAL : " << getString() << endl;
     34                format = getFormat();
     35                cout << "Received STRVAL : " << getString() << "format = " << format << endl;
    3436                services = DimClient::getServerServices();
    3537                cout<< "from "<< DimClient::getServerName() << " services:" << endl;
  • trunk/FACT++/dim/src/examples/test_server.cxx

    r11695 r11881  
     1//============================================================================
     2// Name        : emptyDimFormat.cpp
     3// Author      : Etienne Lyard etienne.lyard@unige.ch
     4// Version     : 00
     5// Copyright   :
     6// Description : Demonstrates the occurence of an empty Dim format from the client's perspective
     7//============================================================================
     8/*
     9#include <dic.hxx>
     10#include <dis.hxx>
     11#include <iostream>
     12using namespace std;
     13
     14class EmptyServiceSubscriber : public DimInfo
     15{
     16    DimStampedInfo* info;
     17        int noLink;
     18public:
     19    EmptyServiceSubscriber()
     20    {
     21//        info = new DimStampedInfo("TIME/EMPTY", const_cast<char*>(""), this);
     22                noLink = -1;
     23        info = new DimStampedInfo("TIME/EMPTY", noLink, this);
     24    }
     25    void infoHandler()
     26    {
     27        DimInfo* I = getInfo();
     28                int data;
     29        if (I == info)
     30                {
     31                        data = I->getInt();
     32//              cout << "EMPTY SERVICE UPDATED. " << "Format: " << I->getFormat() << endl;
     33                        cout << "EMPTY SERVICE UPDATED. " << data << " Format: " << I->getFormat() << endl;
     34                }
     35    }
     36};
     37
     38int main(int, const char**)
     39{
     40    DimServer::start("TIME");
     41
     42    int emptyFormatVariable = 0;
     43    DimService* emptyFormatService = new DimService("TIME/EMPTY", "I:1", &emptyFormatVariable, sizeof(long));
     44    EmptyServiceSubscriber mySubscriber;
     45    //The three lines below create (most of the time) an empty format on the client side.
     46    //We must be able to deal with such cases in our framework because services can be stopped and re-spawned at any time
     47    delete emptyFormatService;
     48    usleep(1000000);
     49    emptyFormatService = new DimService("TIME/EMPTY", "I:1", &emptyFormatVariable, sizeof(long));
     50
     51    while (1)
     52    {
     53        emptyFormatService->updateService();
     54        usleep(1000000);
     55    }
     56
     57        return 0;
     58}
     59*/
     60
    161#include <iostream>
    262#include <dis.hxx>
Note: See TracChangeset for help on using the changeset viewer.