计划寒假写一个远程参数配置工具包。

Linux中有大家熟知的proc fs,透过proc fs用户可以很方便地在runtime配置内核参数。

对于一个常规应用程序,如果对外也提供这样一个接口,让用户在运行时能够配置参数,会不会有意思呢?

 

实现一个工具包,对外提供http配置服务,对内可以修改程序运行时参数,控制行为等。

 

/* Currently doesn't support parallel modification. Serialized by lock */
 
class InterfaceService{
       RegisterService(Service *sv, CtrlParam *ctl);       //注册服务回调函数
       UnRegisterService(Service *sv);    //注销服务
};
 
 
class Service{        
public:
        Set();
        Get();
        Act();
        char serviceName[MAX_NAME];
        void *data; 
        /* need more things to manage internal state. */
 
};
 
class CtrlParam{
public:
        OutputHTML();
};
 
 
class Server{
public:
        ParseForm();
        OutputHTML();
private:
        FindService(char serviceName[]);
        Service *list;
};

 

 

 

简单实现样例:

 

Server::ParseForm(Form *form)
{
             Service *sv;
             sv = FindService(form->GetServiceName());
             if (sv) {
                         if (GET_DATA == form->type){
                                  sv->Get();     // data saved to sv->data
                         }else if(SET_DATA == form->type){
                                  sv->data = form->GetData();
                                  sv->Set();
                         }else if(INVOKE_ACTION == form->type){
                                  sv->data = form->GetData();
                                  sv->Act();
                         }                                  
             }
}
 
Server::OutputHTML()
{
              foreach(list, s){
                          s->OutputHTML();
              }
}

核心组件:

      HTTP服务器,FORM解释器,动作响应器