Changeset 5381

Show
Ignore:
Timestamp:
03/14/08 07:42:30 (6 months ago)
Author:
morris
Message:

Change version to a string

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libwired/trunk/libwired/p7/wi-p7-private.h

    r5261 r5381  
    6464WI_EXPORT void                                                          wi_p7_message_deserialize(wi_p7_message_t *); 
    6565 
    66 WI_EXPORT wi_boolean_t                                          wi_p7_spec_is_compatible_with_protocol(wi_p7_spec_t *, wi_string_t *, double); 
     66WI_EXPORT wi_boolean_t                                          wi_p7_spec_is_compatible_with_protocol(wi_p7_spec_t *, wi_string_t *, wi_string_t *); 
    6767 
    6868WI_EXPORT wi_string_t *                                         wi_p7_xml_copy_string_for_attribute(xmlNodePtr, wi_string_t *); 
  • libwired/trunk/libwired/p7/wi-p7-socket.c

    r5369 r5381  
    134134        wi_p7_spec_t                                                    *spec; 
    135135        wi_string_t                                                             *name; 
    136         double                                                                 version; 
     136        wi_string_t                                                            *version; 
    137137         
    138138        wi_p7_serialization_t                                   serialization; 
     
    278278        wi_release(p7_socket->spec); 
    279279        wi_release(p7_socket->name); 
     280        wi_release(p7_socket->version); 
    280281        wi_release(p7_socket->rsa); 
    281282        wi_release(p7_socket->cipher); 
     
    355356 
    356357static wi_boolean_t _wi_p7_socket_connect_handshake(wi_p7_socket_t *p7_socket, wi_time_interval_t timeout, wi_p7_options_t options) { 
     358        wi_string_t                     *version; 
    357359        wi_p7_message_t         *p7_message; 
    358         wi_p7_double_t          version; 
    359360        wi_p7_enum_t            flag; 
    360361         
     
    364365                return false; 
    365366 
    366         if(!wi_p7_message_set_double_for_name(p7_message, wi_p7_spec_version(wi_p7_spec_builtin_spec()), WI_STR("p7.handshake.version"))) 
     367        if(!wi_p7_message_set_string_for_name(p7_message, wi_p7_spec_version(wi_p7_spec_builtin_spec()), WI_STR("p7.handshake.version"))) 
    367368                return false; 
    368369         
     
    370371                return false; 
    371372         
    372         if(!wi_p7_message_set_double_for_name(p7_message, wi_p7_spec_version(p7_socket->spec), WI_STR("p7.handshake.protocol_version"))) 
     373        if(!wi_p7_message_set_string_for_name(p7_message, wi_p7_spec_version(p7_socket->spec), WI_STR("p7.handshake.protocol_version"))) 
    373374                return false; 
    374375         
     
    415416        } 
    416417         
    417         if(!wi_p7_message_get_double_for_name(p7_message, &version, WI_STR("p7.handshake.version"))) { 
     418        version = wi_p7_message_string_for_name(p7_message, WI_STR("p7.handshake.version")); 
     419         
     420        if(!version) { 
    418421                wi_error_set_libwired_p7_error(WI_ERROR_P7_HANDSHAKEFAILED, 
    419422                        WI_STR("Message has no \"p7.handshake.version\" field")); 
     
    422425        } 
    423426 
    424         if(version != wi_p7_spec_version(wi_p7_spec_builtin_spec())) { 
     427        if(!wi_is_equal(version, wi_p7_spec_version(wi_p7_spec_builtin_spec()))) { 
    425428                wi_error_set_libwired_p7_error(WI_ERROR_P7_HANDSHAKEFAILED, 
    426429                        WI_STR("Remote P7 protocol %.1f is not compatible"), 
     
    439442        } 
    440443         
    441         if(!wi_p7_message_get_double_for_name(p7_message, &p7_socket->version, WI_STR("p7.handshake.protocol_version"))) { 
     444        p7_socket->version = wi_retain(wi_p7_message_string_for_name(p7_message, WI_STR("p7.handshake.protocol_version"))); 
     445 
     446        if(!p7_socket->version) { 
    442447                wi_error_set_libwired_p7_error(WI_ERROR_P7_HANDSHAKEFAILED, 
    443448                        WI_STR("Message has no \"p7.handshake.protocol_version\" field")); 
     
    481486 
    482487static wi_boolean_t _wi_p7_socket_accept_handshake(wi_p7_socket_t *p7_socket, wi_time_interval_t timeout, wi_p7_options_t options) { 
     488        wi_string_t                     *version; 
    483489        wi_p7_message_t         *p7_message; 
    484         wi_p7_double_t          version; 
    485490        wi_p7_enum_t            flag; 
    486491        wi_p7_options_t         client_options; 
     
    499504        } 
    500505         
    501         if(!wi_p7_message_get_double_for_name(p7_message, &version, WI_STR("p7.handshake.version"))) { 
     506        version = wi_p7_message_string_for_name(p7_message, WI_STR("p7.handshake.version")); 
     507         
     508        if(!version) { 
    502509                wi_error_set_libwired_p7_error(WI_ERROR_P7_HANDSHAKEFAILED, 
    503510                        WI_STR("Message has no \"p7.handshake.version\" field")); 
     
    506513        } 
    507514         
    508         if(version != wi_p7_spec_version(wi_p7_spec_builtin_spec())) { 
     515        if(!wi_is_equal(version, wi_p7_spec_version(wi_p7_spec_builtin_spec()))) { 
    509516                wi_error_set_libwired_p7_error(WI_ERROR_P7_HANDSHAKEFAILED, 
    510517                        WI_STR("Remote P7 protocol %.1f is not compatible"), 
     
    523530        } 
    524531         
    525         if(!wi_p7_message_get_double_for_name(p7_message, &p7_socket->version, WI_STR("p7.handshake.protocol_version"))) { 
     532        p7_socket->version = wi_retain(wi_p7_message_string_for_name(p7_message, WI_STR("p7.handshake.protocol_version"))); 
     533 
     534        if(!p7_socket->version) { 
    526535                wi_error_set_libwired_p7_error(WI_ERROR_P7_HANDSHAKEFAILED, 
    527536                        WI_STR("Message has no \"p7.handshake.protocol_version\" field")); 
     
    560569                return false; 
    561570         
    562         if(!wi_p7_message_set_double_for_name(p7_message, wi_p7_spec_version(wi_p7_spec_builtin_spec()), WI_STR("p7.handshake.version"))) 
     571        if(!wi_p7_message_set_string_for_name(p7_message, wi_p7_spec_version(wi_p7_spec_builtin_spec()), WI_STR("p7.handshake.version"))) 
    563572                return false; 
    564573         
     
    566575                return false; 
    567576         
    568         if(!wi_p7_message_set_double_for_name(p7_message, wi_p7_spec_version(p7_socket->spec), WI_STR("p7.handshake.protocol_version"))) 
     577        if(!wi_p7_message_set_string_for_name(p7_message, wi_p7_spec_version(p7_socket->spec), WI_STR("p7.handshake.protocol_version"))) 
    569578                return false; 
    570579         
     
    989998         
    990999        compatible = wi_p7_spec_is_compatible_with_spec(p7_socket->spec, p7_spec); 
    991  
     1000         
     1001        wi_log_info(WI_STR("%d %m"), compatible); 
     1002         
    9921003        wi_release(p7_spec); 
    9931004 
  • libwired/trunk/libwired/p7/wi-p7-spec.c

    r5380 r5381  
    302302        wi_string_t                                                             *filename; 
    303303        wi_string_t                                                             *name; 
    304         double                                                                 version; 
     304        wi_string_t                                                            *version; 
    305305        wi_p7_originator_t                                              originator; 
    306306         
     
    367367        "" 
    368368        "       <p7:fields>" 
    369         "               <p7:field name=\"p7.handshake.version\" type=\"double\" id=\"1\" />" 
     369        "               <p7:field name=\"p7.handshake.version\" type=\"string\" id=\"1\" />" 
    370370        "               <p7:field name=\"p7.handshake.protocol_name\" type=\"string\" id=\"2\" />" 
    371         "               <p7:field name=\"p7.handshake.protocol_version\" type=\"double\" id=\"3\" />" 
     371        "               <p7:field name=\"p7.handshake.protocol_version\" type=\"string\" id=\"3\" />" 
    372372        "               <p7:field name=\"p7.handshake.compression\" type=\"enum\" id=\"4\">" 
    373373        "                       <p7:enum name=\"p7.handshake.compression.deflate\" value=\"0\" />" 
     
    637637        wi_release(p7_spec->filename); 
    638638        wi_release(p7_spec->name); 
     639        wi_release(p7_spec->version); 
    639640        wi_release(p7_spec->compatible_protocols); 
    640641         
     
    657658        wi_p7_spec_t            *p7_spec = instance; 
    658659         
    659         return wi_string_with_format(WI_STR("<%@ %p>{name = %@, version = %.1f, types = %@, fields = %@, messages = %@}"), 
     660        return wi_string_with_format(WI_STR("<%@ %p>{name = %@, version = %@, types = %@, fields = %@, messages = %@}"), 
    660661                wi_runtime_class_name(p7_spec), 
    661662                p7_spec, 
     
    758759 
    759760static wi_boolean_t _wi_p7_spec_load_spec(wi_p7_spec_t *p7_spec, xmlDocPtr doc) { 
    760         wi_string_t             *version; 
    761761        xmlNodePtr              root_node, node; 
    762762         
     
    780780        } 
    781781         
    782         version = wi_autorelease(wi_p7_xml_copy_string_for_attribute(root_node, WI_STR("version"))); 
    783          
    784         if(!version) { 
     782        p7_spec->version = wi_p7_xml_copy_string_for_attribute(root_node, WI_STR("version")); 
     783         
     784        if(!p7_spec->version) { 
    785785                wi_error_set_libwired_p7_error(WI_ERROR_P7_INVALIDSPEC, 
    786786                        WI_STR("Protocol has no \"version\"")); 
     
    788788                return false; 
    789789        } 
    790          
    791         p7_spec->version = wi_string_double(version); 
    792790 
    793791        for(node = root_node->children; node != NULL; node = node->next) { 
     
    10701068#pragma mark - 
    10711069 
    1072 wi_boolean_t wi_p7_spec_is_compatible_with_protocol(wi_p7_spec_t *p7_spec, wi_string_t *name, double version) { 
    1073         return ((wi_is_equal(p7_spec->name, name) && p7_spec->version == version) || 
    1074                         wi_set_contains_data(p7_spec->compatible_protocols, wi_string_with_format(WI_STR("%@ %.1f"), name, version))); 
     1070wi_boolean_t wi_p7_spec_is_compatible_with_protocol(wi_p7_spec_t *p7_spec, wi_string_t *name, wi_string_t *version) { 
     1071        return ((wi_is_equal(p7_spec->name, name) && wi_is_equal(p7_spec->version, version)) || 
     1072                        wi_set_contains_data(p7_spec->compatible_protocols, wi_string_with_format(WI_STR("%@ %@"), name, version))); 
    10751073} 
    10761074 
     
    10831081         
    10841082        if(compatible) { 
    1085                 wi_set_add_data(p7_spec->compatible_protocols, wi_string_with_format(WI_STR("%@ %.1f"), 
     1083                wi_set_add_data(p7_spec->compatible_protocols, wi_string_with_format(WI_STR("%@ %@"), 
    10861084                        other_p7_spec->name, other_p7_spec->version)); 
    10871085        } 
     
    14091407 
    14101408 
    1411 double wi_p7_spec_version(wi_p7_spec_t *p7_spec) { 
     1409wi_string_t * wi_p7_spec_version(wi_p7_spec_t *p7_spec) { 
    14121410        return p7_spec->version; 
    14131411} 
  • libwired/trunk/libwired/p7/wi-p7-spec.h

    r5326 r5381  
    5959 
    6060WI_EXPORT wi_string_t *                                 wi_p7_spec_name(wi_p7_spec_t *); 
    61 WI_EXPORT double                                              wi_p7_spec_version(wi_p7_spec_t *); 
     61WI_EXPORT wi_string_t *                                       wi_p7_spec_version(wi_p7_spec_t *); 
    6262WI_EXPORT wi_p7_originator_t                    wi_p7_spec_originator(wi_p7_spec_t *); 
    6363WI_EXPORT wi_string_t *                                 wi_p7_spec_xml(wi_p7_spec_t *);