dms_lib.cpp:
#include "dms_lib.h"
#include <pthread.h>
#include "PltUPnP.h"
#include "PltFileMediaServer.h"
NPT_SET_LOCAL_LOGGER("platinum.media.server")
PLT_UPnP upnp;
PLT_DeviceHostReference device;
pthread_t thread;
int stop_dms();
void* start_dms(void*)
{
// setup Neptune logging
NPT_LogManager::GetDefault().Configure("plist:.level=INFO;.handlers=ConsoleHandler;.ConsoleHandler.colors=off;.ConsoleHandler.filter=42");
NPT_LOG_INFO("enter start_dms()\n");
/* for DLNA faster testing */
PLT_Constants::GetInstance().SetDefaultDeviceLease(30.);
device = new PLT_FileMediaServer("/data/local",
"1111111111UPnP Media Server",
false,
"1111111111111");
NPT_List<NPT_IpAddress> list;
//NPT_CHECK_SEVERE(PLT_UPnPMessageHelper::GetIPAddresses(list));
PLT_UPnPMessageHelper::GetIPAddresses(list);
NPT_String ip = list.GetFirstItem()->ToString();
device->m_ModelDescription = "Platinum File Media Server";
device->m_ModelURL = "http://www.plutinosoft.com/";
device->m_ModelNumber = "1.0";
device->m_ModelName = "Platinum File Media Server";
device->m_Manufacturer = "Plutinosoft";
device->m_ManufacturerURL = "http://www.plutinosoft.com/";
upnp.AddDevice(device);
NPT_String uuid = device->GetUUID();
upnp.Start();
//NPT_CHECK_SEVERE(upnp.Start());
NPT_LOG_INFO_2("baojinyu,debug info:ip-->%s,uuid--->%s",
(const char*)ip,
(const char*)uuid);
while(1)
{
}
stop_dms();
pthread_exit(NULL);
return NULL;
}
int stop_dms()
{
NPT_LOG_INFO("baojinyu--------dms_lib---->stop_dms.\n");
upnp.Stop();
return 0;
}
int dmsThreadBegin()
{
int dmsT;
int retval;
retval = pthread_create(&thread, NULL, start_dms, (void*)dmsT);
if(retval != 0)
{
NPT_LOG_INFO("baojinyu---------------create thread fail!\n");
return -1;
}
else
{
NPT_LOG_INFO("baojinyu----------------pthread_create success.\n");
return 0;
}
return 0;
}
int dmsThreadEnd()
{
//pthread_join();
stop_dms();
pthread_exit(NULL);//should be:send command to thread to end itself.
//pthread_cancel(thread); //there is no this function.
return 0;
}
dms_lib.h:
#ifndef DMS_LIB_H
#define DMS_LIB_H
int dmsThreadBegin();
//int dmsThreadEnd();
#endif //DMS_LIB_H
main.cpp:
#include "dms_lib.h"
/*----------------------------------------------------------------------
| main
+---------------------------------------------------------------------*/
int
main(int /* argc */, char** argv)
{
dmsThreadBegin();
while(1)
{
}
//dmsThreadEnd();
return 0;
}