Esempio n. 1
0
static int
ldo_session_connect(ScarabSession * session)
{
	LDO_Session    *s;
	unsigned char  expected_magic[sizeof(MAGIC)];
	int             i;

	s = (LDO_Session*)scarab_mem_malloc(sizeof(LDO_Session));

	s->refs = scarab_dict_new(11, scarab_dict_times2);

	int magic_size = 0;
	if ((magic_size = scarab_session_read(session, expected_magic, sizeof(MAGIC)))
                                                        != sizeof(MAGIC)) {
		fprintf(stderr,"Wrong size magic (is %d, should be %d)\n",
						magic_size, sizeof(MAGIC));fflush(stderr);
		return scarab_session_seterr(session, LDO_ERR_BAD_HEADER);
	}

	for (i = 0; i < sizeof(MAGIC); i++) {
		if (expected_magic[i] != MAGIC[i]) {
			fprintf(stderr,"Wrong magic (in pos %d:  is: %x, should be %x)\n",
							i, MAGIC[i], expected_magic[i]);
			fflush(stderr);
			return scarab_session_seterr(session, LDO_ERR_BAD_HEADER);
		}
	}

	
	scarab_session_set_encoder(session, &scarab_ldo_encoder, s);

	return 0;
}
Esempio n. 2
0
Datum VariableRegistry::generateCodecDatum() {
	
	ScarabDatum *codec = NULL;
    shared_ptr<Variable> var;
	
	
	boost::mutex::scoped_lock s_lock(lock);

    int dictSize = master_variable_list.size();
	
	codec = scarab_dict_new(dictSize, &scarab_dict_times2);
	
	
    for(int i = 0; i < dictSize; i++) {
        var = master_variable_list[i];
		
		if(var == NULL) { 
            continue; 
        }
        
		int codec_code = var->getCodecCode();
		
		if(codec_code == RESERVED_CODEC_CODE) {
			continue;
		}
        
		VariableProperties *props = var->getProperties();
		
        if(props == NULL){ 
            continue; 
        }
        
        Datum serialized_var(props->operator Datum());
		
        if(serialized_var.isUndefined()) {
            mdebug("local parameter null value at param (%d)", i);
        }
		ScarabDatum *codec_key = scarab_new_integer(codec_code);
        scarab_dict_put(codec, codec_key, serialized_var.getScarabDatum());
		scarab_free_datum(codec_key);
    }
	
	
    Datum returnCodec(codec);
	scarab_free_datum(codec);
    return returnCodec;  
}
Esempio n. 3
0
static int
ldo_session_accept(ScarabSession * session)
{
	LDO_Session    *s;

	s = (LDO_Session*)scarab_mem_malloc(sizeof(LDO_Session));

	s->refs = scarab_dict_new(11, scarab_dict_times2);

	int write_size = scarab_session_write(session, (const void *)MAGIC, 7);
	scarab_session_send(session);
	if (write_size != 7 )
		return scarab_session_seterr(session, LDO_ERR_BAD_HEADER);



	scarab_session_set_encoder(session, &scarab_ldo_encoder, s);

	return 0;
}
Esempio n. 4
0
static ScarabDatum *
ldo_read_dict(ScarabSession * session)
{
	int             len;
	ScarabDatum    *dict;

	len = ldo_readber(session);
	dict = scarab_dict_new(len, scarab_dict_times2);

	for (; len > 0; len--)
	{
		ScarabDatum *key  = ldo_read(session);
		ScarabDatum *value = ldo_read(session);
		scarab_dict_put(dict,
						key,
						value);
		scarab_free_datum(key);
		scarab_free_datum(value);
	}
	return dict;
}