Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #include "RemapPluginInfo.h"
00025 
00026 remap_plugin_info::remap_plugin_info(char *_path)
00027   :  next(0), path(NULL), path_size(0), dlh(NULL), fp_tsremap_init(NULL), fp_tsremap_done(NULL), fp_tsremap_new_instance(NULL),
00028      fp_tsremap_delete_instance(NULL), fp_tsremap_do_remap(NULL), fp_tsremap_os_response(NULL) 
00029 {
00030   
00031   
00032   if (_path && likely((path = ats_strdup(_path)) > 0))
00033     path_size = strlen(path);
00034 }
00035 
00036 remap_plugin_info::~remap_plugin_info()
00037 {
00038   ats_free(path);
00039   if (dlh)
00040     dlclose(dlh);
00041 }
00042 
00043 
00044 
00045 
00046 
00047 remap_plugin_info *
00048 remap_plugin_info::find_by_path(char *_path)
00049 {
00050   int _path_size = 0;
00051   remap_plugin_info *pi = 0;
00052 
00053   if (likely(_path && (_path_size = strlen(_path)) > 0)) {
00054     for (pi = this; pi; pi = pi->next) {
00055       if (pi->path && pi->path_size == _path_size && !strcmp(pi->path, _path))
00056         break;
00057     }
00058   }
00059 
00060   return pi;
00061 }
00062 
00063 
00064 
00065 
00066 
00067 void
00068 remap_plugin_info::add_to_list(remap_plugin_info * pi)
00069 {
00070   remap_plugin_info *p = this;
00071 
00072   if (likely(pi)) {
00073     while (p->next)
00074       p = p->next;
00075 
00076     p->next = pi;
00077     pi->next = NULL;
00078   }
00079 }
00080 
00081 
00082 
00083 
00084 
00085 void
00086 remap_plugin_info::delete_my_list()
00087 {
00088   remap_plugin_info *p = this->next;
00089 
00090   while (p) {
00091     remap_plugin_info *tmp = p;
00092 
00093     p = p->next;
00094     delete tmp;
00095   }
00096 
00097   delete this;
00098 }