diff --git a/sflphone-common/src/account.h b/sflphone-common/src/account.h index e2113f2cb234e7c97504355563786c7f48c1f161..cf49c886c05af2daa1542e0aa763dc660e133328 100644 --- a/sflphone-common/src/account.h +++ b/sflphone-common/src/account.h @@ -155,7 +155,7 @@ class Account : public Serializable{ */ virtual ~Account(); - virtual void serialize(Engine *engine) = 0; + virtual void serialize(Conf::YamlEmitter *emitter) = 0; virtual void unserialize(Conf::MappingNode *map) = 0; diff --git a/sflphone-common/src/config/serializable.h b/sflphone-common/src/config/serializable.h index 7b7cf657a4661592a19eec5e7e1df348c3b78c96..e9b88cc84c1059c1a917b0f86b971a6bcc401ab9 100755 --- a/sflphone-common/src/config/serializable.h +++ b/sflphone-common/src/config/serializable.h @@ -33,6 +33,7 @@ #include "yamlparser.h" +#include "yamlemitter.h" #include "yamlnode.h" class Engine; @@ -42,7 +43,7 @@ class Serializable { public: - virtual void serialize(Engine *engine) = 0; + virtual void serialize(Conf::YamlEmitter *emitter) = 0; virtual void unserialize(Conf::MappingNode *map) = 0; diff --git a/sflphone-common/src/config/yamlemitter.cpp b/sflphone-common/src/config/yamlemitter.cpp index 3998e696708441ecc57fe3de79a1172f86c42205..7cd1eacba182d2c8d60746b1b01f301a03127f55 100755 --- a/sflphone-common/src/config/yamlemitter.cpp +++ b/sflphone-common/src/config/yamlemitter.cpp @@ -120,8 +120,30 @@ void YamlEmitter::writeAccount(MappingNode *map) } +void YamlEmitter::writePreference(MappingNode *map) +{ + std::string preferencestr("preferences"); + + if(map->getType() == MAPPING) + throw YamlEmitterException("Node type is not a mapping while writing preferences"); + + int preferenceid = yaml_document_add_scalar(&document, NULL, (yaml_char_t *)preferencestr.c_str(), -1, YAML_PLAIN_SCALAR_STYLE); + int preferencemapping = yaml_document_add_mapping (&document, NULL, YAML_BLOCK_MAPPING_STYLE); + + yaml_document_append_mapping_pair (&document, topLevelMapping, preferenceid, preferencemapping); + + Mapping *internalmap = map->getMapping(); + Mapping::iterator iter = internalmap->begin(); + + while(iter != internalmap->end()) { + addMappingItem(preferencemapping, iter->first, iter->second); + iter++; + } + +} + - void YamlEmitter::addMappingItem(int mappingid, Key key, YamlNode *node) +void YamlEmitter::addMappingItem(int mappingid, Key key, YamlNode *node) { if(node->getType() == SCALAR) { @@ -148,6 +170,8 @@ void YamlEmitter::writeAccount(MappingNode *map) iter++; } } + else + throw YamlEmitterException("Unknown node type while adding mapping node"); } diff --git a/sflphone-common/src/config/yamlemitter.h b/sflphone-common/src/config/yamlemitter.h index 2bd0c24d0c8b14a51db3ed56eb8da494f0456d54..47bce14a5fb0b4cd04c68c51ec9166a7725e5d72 100755 --- a/sflphone-common/src/config/yamlemitter.h +++ b/sflphone-common/src/config/yamlemitter.h @@ -77,7 +77,7 @@ class YamlEmitter { void writeAccount(MappingNode *map); - void writePreference(); + void writePreference(MappingNode *map); void writeAddressbook(); diff --git a/sflphone-common/src/iax/iaxaccount.cpp b/sflphone-common/src/iax/iaxaccount.cpp index b94ca59623863b4ef4a9600e087754bd77d90d6d..bbf2bf02899c67b49f07f96680f7a772d3ccf986 100644 --- a/sflphone-common/src/iax/iaxaccount.cpp +++ b/sflphone-common/src/iax/iaxaccount.cpp @@ -47,7 +47,7 @@ IAXAccount::~IAXAccount() _link = NULL; } -void IAXAccount::serialize(Engine *engine) +void IAXAccount::serialize(Conf::YamlEmitter *emitter) { } diff --git a/sflphone-common/src/iax/iaxaccount.h b/sflphone-common/src/iax/iaxaccount.h index f6fb6414e30b42ec09eff029cd493f4cd52fab16..fc78a70de32deed7eceb6abafacb7ce645660fda 100644 --- a/sflphone-common/src/iax/iaxaccount.h +++ b/sflphone-common/src/iax/iaxaccount.h @@ -44,7 +44,7 @@ class IAXAccount : public Account ~IAXAccount(); - virtual void serialize(Engine *engine); + virtual void serialize(Conf::YamlEmitter *emitter); virtual void unserialize(Conf::MappingNode *map); diff --git a/sflphone-common/src/preferences.cpp b/sflphone-common/src/preferences.cpp index 30181d3c2b62d988a23e94db1b06ef5c06c5f736..f3de3357fdf2a2859e46d3f7a6c2a149bda09e9d 100644 --- a/sflphone-common/src/preferences.cpp +++ b/sflphone-common/src/preferences.cpp @@ -50,7 +50,7 @@ Preferences::Preferences() : _accountOrder("") Preferences::~Preferences() {} -void Preferences::serialize(Engine *engine) +void Preferences::serialize(Conf::YamlEmitter *emiter) { Conf::MappingNode preferencemap(NULL); @@ -86,6 +86,7 @@ void Preferences::serialize(Engine *engine) preferencemap.setKeyValue(zeroConfenableKey, &zeroConfenable); preferencemap.setKeyValue(md5HashKey, &md5Hash); + } void Preferences::unserialize(Conf::MappingNode *map) @@ -118,4 +119,6 @@ void Preferences::unserialize(Conf::MappingNode *map) val = (Conf::ScalarNode *)(map->getValue(md5HashKey)); if(val) { _md5Hash = (val->getValue().compare("true") == 0) ? true : false; val = NULL; } + + } diff --git a/sflphone-common/src/preferences.h b/sflphone-common/src/preferences.h index 5ed97c082124a17219e8f9c107a1f4356b0121c1..0b8330ae36caf0e5d1436f398155fbdd2c5d9e2d 100755 --- a/sflphone-common/src/preferences.h +++ b/sflphone-common/src/preferences.h @@ -54,7 +54,7 @@ class Preferences : public Serializable { ~Preferences(); - virtual void serialize(Engine *engine); + virtual void serialize(Conf::YamlEmitter *emitter); virtual void unserialize(Conf::MappingNode *map); diff --git a/sflphone-common/src/sip/sipaccount.cpp b/sflphone-common/src/sip/sipaccount.cpp index e112421be22abccc6d900b01b2192a8dc5639461..699e21f2a677e1529a58db5249da1e696da00a15 100755 --- a/sflphone-common/src/sip/sipaccount.cpp +++ b/sflphone-common/src/sip/sipaccount.cpp @@ -40,7 +40,7 @@ Credentials::Credentials() : credentialCount(0) {} Credentials::~Credentials() {} -void Credentials::serialize(Engine *engine) +void Credentials::serialize(Conf::YamlEmitter *emitter) { } @@ -132,7 +132,7 @@ SIPAccount::~SIPAccount() free (_tlsSetting); } -void SIPAccount::serialize(Engine *engine) { +void SIPAccount::serialize(Conf::YamlEmitter *emitter) { Conf::MappingNode accountmap(NULL); diff --git a/sflphone-common/src/sip/sipaccount.h b/sflphone-common/src/sip/sipaccount.h index d4999329703f5eb1b1c4171eeb589b61f6b55560..b06c1e4bdd2b778fb76e743c30f38574a34cb320 100755 --- a/sflphone-common/src/sip/sipaccount.h +++ b/sflphone-common/src/sip/sipaccount.h @@ -134,7 +134,7 @@ class Credentials : public Serializable ~Credentials(); - virtual void serialize(Engine *engine); + virtual void serialize(Conf::YamlEmitter *emitter); virtual void unserialize(Conf::MappingNode *map); @@ -170,7 +170,7 @@ class SIPAccount : public Account */ virtual ~SIPAccount(); - virtual void serialize(Engine *engine); + virtual void serialize(Conf::YamlEmitter *emitter); virtual void unserialize(Conf::MappingNode *map);