本文整理汇总了C++中NPT_String类的典型用法代码示例。如果您正苦于以下问题:C++ NPT_String类的具体用法?C++ NPT_String怎么用?C++ NPT_String使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了NPT_String类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NPT_CHECK_WARNING
/*----------------------------------------------------------------------
| PLT_MediaRenderer::OnSetAVTransportURI
+---------------------------------------------------------------------*/
NPT_Result
PLT_MediaRenderer::OnSetAVTransportURI(PLT_ActionReference& action)
{
/*test*/
PLT_Service* serviceAVT;
NPT_CHECK_WARNING(FindServiceByType("urn:schemas-upnp-org:service:AVTransport:1", serviceAVT));
// update service state variables
//serviceAVT->SetStateVariable("TransportState", "TRANSITIONING");
/*test*/
if (m_Delegate) {
return m_Delegate->OnSetAVTransportURI(action);
}
// default implementation is using state variable
NPT_String uri;
NPT_CHECK_WARNING(action->GetArgumentValue("CurrentURI", uri));
NPT_String metadata;
NPT_CHECK_WARNING(action->GetArgumentValue("CurrentURIMetaData", metadata));
//PLT_Service* serviceAVT;
//NPT_CHECK_WARNING(FindServiceByType("urn:schemas-upnp-org:service:AVTransport:1", serviceAVT));
// update service state variables
serviceAVT->SetStateVariable("AVTransportURI", uri);
serviceAVT->SetStateVariable("AVTransportURIMetaData", metadata);
//serviceAVT->SetStateVariable("TransportState", "PLAYING");//test
OutputDebugString(uri.GetChars());
return NPT_SUCCESS;
}
示例2: switch
/*----------------------------------------------------------------------
| BLT_DecoderServer::OnSetPropertyCommand
+---------------------------------------------------------------------*/
void
BLT_DecoderServer::OnSetPropertyCommand(BLT_PropertyScope scope,
const NPT_String& /*target*/,
const NPT_String& name,
const ATX_PropertyValue* value)
{
BLT_Result result;
ATX_LOG_FINE_1("[%s]", name.GetChars());
ATX_Properties* properties = NULL;
switch (scope) {
case BLT_PROPERTY_SCOPE_CORE:
result = BLT_Decoder_GetProperties(m_Decoder, &properties);
break;
case BLT_PROPERTY_SCOPE_STREAM:
result = BLT_Decoder_GetStreamProperties(m_Decoder, &properties);
break;
default:
// not handled yet
result = BLT_ERROR_NOT_SUPPORTED;
}
if (ATX_SUCCEEDED(result) && properties != NULL) {
result = ATX_Properties_SetProperty(properties, name.GetChars(), value);
}
SendReply(BLT_DecoderServer_Message::COMMAND_ID_SET_PROPERTY, result);
}
示例3:
/*----------------------------------------------------------------------
| PLT_HttpHelper::ParseBody
+---------------------------------------------------------------------*/
NPT_Result
PLT_HttpHelper::ParseBody(const NPT_HttpMessage& message,
NPT_XmlElementNode*& tree)
{
// reset tree
tree = NULL;
// read body
NPT_String body;
NPT_CHECK_WARNING(GetBody(message, body));
// parse body
NPT_XmlParser parser;
NPT_XmlNode* node;
NPT_Result result = parser.Parse(body, node);
if (NPT_FAILED(result)) {
NPT_LOG_FINEST_1("Failed to parse %s", body.IsEmpty()?"(empty string)":body.GetChars());
NPT_CHECK_WARNING(result);
}
tree = node->AsElementNode();
if (!tree) {
delete node;
return NPT_FAILURE;
}
return NPT_SUCCESS;
}
示例4: UdpServerLoop
/*----------------------------------------------------------------------
| UdpServerLoop
+---------------------------------------------------------------------*/
static void
UdpServerLoop(int port)
{
NPT_UdpSocket listener;
// info
if (Options.verbose) {
NPT_Debug("listening on port %d\n", port);
}
NPT_Result result = listener.Bind(NPT_SocketAddress(NPT_IpAddress::Any, port));
if (NPT_FAILED(result)) {
NPT_Debug("ERROR: Bind() failed (%d)\n", result);
}
// packet loop
NPT_DataBuffer packet(32768);
NPT_SocketAddress address;
do {
result = listener.Receive(packet, &address);
if (NPT_SUCCEEDED(result)) {
if (Options.verbose) {
NPT_String ip = address.GetIpAddress().ToString();
NPT_Debug("Received %d bytes from %s:%d\n", packet.GetDataSize(), ip.GetChars(), address.GetPort());
}
listener.Send(packet, &address);
}
} while (NPT_SUCCEEDED(result));
}
示例5:
/*----------------------------------------------------------------------
| NPT_UrlQuery::UrlDecode
+---------------------------------------------------------------------*/
NPT_String
NPT_UrlQuery::UrlDecode(const char* str)
{
NPT_String decoded = NPT_Uri::PercentDecode(str);
decoded.Replace('+', ' ');
return decoded;
}
示例6: item
bool CUPnPPlayer::QueueNextFile(const CFileItem& file)
{
CFileItem item(file);
NPT_Reference<CThumbLoader> thumb_loader;
NPT_Reference<PLT_MediaObject> obj;
NPT_String path(file.GetPath().c_str());
NPT_String tmp;
if (file.IsVideoDb())
thumb_loader = NPT_Reference<CThumbLoader>(new CVideoThumbLoader());
else if (item.IsMusicDb())
thumb_loader = NPT_Reference<CThumbLoader>(new CMusicThumbLoader());
obj = BuildObject(item, path, 0, thumb_loader, NULL, CUPnP::GetServer());
if(!obj.IsNull())
{
NPT_CHECK_LABEL_SEVERE(PLT_Didl::ToDidl(*obj, "", tmp), failed);
tmp.Insert(didl_header, 0);
tmp.Append(didl_footer);
}
NPT_CHECK_LABEL_WARNING(m_control->SetNextAVTransportURI(m_delegate->m_device
, m_delegate->m_instance
, file.GetPath().c_str()
, (const char*)tmp
, m_delegate), failed);
if(!m_delegate->m_resevent.WaitMSec(10000)) goto failed;
NPT_CHECK_LABEL_WARNING(m_delegate->m_resstatus, failed);
return true;
failed:
CLog::Log(LOGERROR, "UPNP: CUPnPPlayer::QueueNextFile - unable to queue file %s", file.GetPath().c_str());
return false;
}
示例7: while
/*----------------------------------------------------------------------
| NPT_String::Replace
+---------------------------------------------------------------------*/
void
NPT_String::Replace(char a, const char* str)
{
// check args
if (m_Chars == NULL || a == '\0' || str == NULL || str[0] == '\0') return;
// optimization
if (NPT_StringLength(str) == 1) return Replace(a, str[0]);
// we are going to create a new string
NPT_String dst;
char* src = m_Chars;
// reserve at least as much as input
dst.Reserve(GetLength());
// process the buffer
while (*src) {
if (*src == a) {
dst += str;
} else {
dst += *src;
}
src++;
}
Assign(dst.GetChars(), dst.GetLength());
}
示例8:
/*----------------------------------------------------------------------
| NPT_String::Format
+---------------------------------------------------------------------*/
NPT_String
NPT_String::Format(const char* format, ...)
{
NPT_String result;
NPT_Size buffer_size = NPT_STRING_FORMAT_BUFFER_DEFAULT_SIZE; // default value
va_list args;
va_start(args, format);
for(;;) {
/* try to format (it might not fit) */
result.Reserve(buffer_size);
char* buffer = result.UseChars();
int f_result = NPT_FormatStringVN(buffer, buffer_size, format, args);
if (f_result >= (int)(buffer_size)) f_result = -1;
if (f_result >= 0) {
result.SetLength(f_result);
break;
}
/* the buffer was too small, try something bigger */
/* (we don't trust the return value of NPT_FormatStringVN */
/* for the actual size needed) */
buffer_size *= 2;
if (buffer_size > NPT_STRING_FORMAT_BUFFER_MAX_SIZE) break;
}
va_end(args);
return result;
}
示例9: while
/*----------------------------------------------------------------------
| PLT_MediaServer::ParseSort
+---------------------------------------------------------------------*/
NPT_Result
PLT_MediaServer::ParseSort(const NPT_String& sort, NPT_List<NPT_String>& list)
{
// reset output params first
list.Clear();
// easy out
if (sort.GetLength() == 0 || sort == "*") return NPT_SUCCESS;
list = sort.Split(",");
// verify each property has a namespace
NPT_List<NPT_String>::Iterator property = list.GetFirstItem();
while (property) {
NPT_List<NPT_String> parsed_property = (*property).Split(":");
if (parsed_property.GetItemCount() != 2)
parsed_property = (*property).Split("@");
if (parsed_property.GetItemCount() != 2 ||
(!(*property).StartsWith("-") && !(*property).StartsWith("+"))) {
NPT_LOG_WARNING_1("Invalid SortCriteria property %s", (*property).GetChars());
return NPT_FAILURE;
}
property++;
}
return NPT_SUCCESS;
}
示例10: Run
void Run() {
do {
// wait for a connection
NPT_Socket* client = NULL;
NPT_LOG_FINE_1("waiting for connection on port %d...", m_Port);
NPT_Result result = m_Socket.WaitForNewClient(client, NPT_TIMEOUT_INFINITE);
if (NPT_FAILED(result) || client == NULL) return;
NPT_SocketInfo client_info;
client->GetInfo(client_info);
NPT_LOG_FINE_2("client connected (%s -> %s)",
client_info.local_address.ToString().GetChars(),
client_info.remote_address.ToString().GetChars());
// get the output stream
NPT_OutputStreamReference output;
client->GetOutputStream(output);
// generate policy based on our current IP
NPT_String policy = "<cross-domain-policy>";
policy += "<allow-access-from domain=\""+client_info.local_address.GetIpAddress().ToString()+"\" to-ports=\""+m_AuthorizedPorts+"\"/>";
policy += "<allow-access-from domain=\""+client_info.remote_address.GetIpAddress().ToString()+"\" to-ports=\""+m_AuthorizedPorts+"\"/>";
policy += "</cross-domain-policy>";
NPT_MemoryStream* mem_input = new NPT_MemoryStream();
mem_input->Write(policy.GetChars(), policy.GetLength());
NPT_InputStreamReference input(mem_input);
NPT_StreamToStreamCopy(*input, *output);
delete client;
} while (!m_Aborted);
}
示例11: NPT_DirectorySplitFilePath
/*----------------------------------------------------------------------
| NPT_DirectorySplitFilePath
+---------------------------------------------------------------------*/
NPT_Result
NPT_DirectorySplitFilePath(const char* filepath,
NPT_String& path,
NPT_String& filename)
{
if (!filepath || filepath[0] == '\0')
return NPT_ERROR_INVALID_PARAMETERS;
path = filepath;
char last_char;
NPT_Int32 i = path.GetLength();
do {
last_char = path[i-1];
if (last_char == '\\' || last_char == '/')
break;
} while (--i);
// we need at least one delimiter and it cannot be last
if (i == 0 || i == (NPT_Int32)path.GetLength()) {
return NPT_ERROR_INVALID_PARAMETERS;
}
// assign filename
filename = filepath+i;
// truncate path & remove trailing slashes
NPT_CHECK(path.SetLength(i-1));
// remove excessive delimiters
path.TrimRight("/");
path.TrimRight("\\");
return NPT_SUCCESS;
}
示例12:
/*----------------------------------------------------------------------
| PLT_MediaItem::ToDidl
+---------------------------------------------------------------------*/
NPT_Result
PLT_MediaItem::ToDidl(NPT_UInt32 mask, NPT_String& didl)
{
NPT_String tmp;
// Allocate enough space for a big string we're going to concatenate in
tmp.Reserve(2048);
tmp = "<item id=\"";
PLT_Didl::AppendXmlEscape(tmp, m_ObjectID);
tmp += "\" parentID=\"";
PLT_Didl::AppendXmlEscape(tmp, m_ParentID);
if (!m_ReferenceID.IsEmpty()) {
tmp += "\" refID=\"";
PLT_Didl::AppendXmlEscape(tmp, m_ReferenceID);
}
tmp += "\" restricted=\"";
tmp += m_Restricted?"1\"":"0\"";
tmp += ">";
NPT_CHECK_SEVERE(PLT_MediaObject::ToDidl(mask, tmp));
/* close tag */
tmp += "</item>";
didl += tmp;
return NPT_SUCCESS;
}
示例13: AddField
/*----------------------------------------------------------------------
| NPT_UrlQuery::Parse
+---------------------------------------------------------------------*/
NPT_Result
NPT_UrlQuery::Parse(const char* query)
{
const char* cursor = query;
NPT_String name;
NPT_String value;
bool in_name = true;
do {
if (*cursor == '\0' || *cursor == '&') {
if (!name.IsEmpty()) {
AddField(name, value, true);
}
name.SetLength(0);
value.SetLength(0);
in_name = true;
} else if (*cursor == '=' && in_name) {
in_name = false;
} else {
if (in_name) {
name += *cursor;
} else {
value += *cursor;
}
}
} while (*cursor++);
return NPT_SUCCESS;
}
示例14: GetConfigValue
/*----------------------------------------------------------------------
| NPT_LogManager::ConfigureLogger
+---------------------------------------------------------------------*/
NPT_Result
NPT_LogManager::ConfigureLogger(NPT_Logger* logger)
{
/* configure the level */
NPT_String* level_value = GetConfigValue(logger->m_Name,".level");
if (level_value) {
NPT_Int32 value;
/* try a symbolic name */
value = NPT_Log::GetLogLevel(*level_value);
if (value < 0) {
/* try a numeric value */
if (NPT_FAILED(level_value->ToInteger(value, false))) {
value = -1;
}
}
if (value >= 0) {
logger->m_Level = value;
logger->m_LevelIsInherited = false;
}
}
/* remove any existing handlers */
logger->DeleteHandlers();
/* configure the handlers */
NPT_String* handlers = GetConfigValue(logger->m_Name,".handlers");
if (handlers) {
const char* handlers_list = handlers->GetChars();
const char* cursor = handlers_list;
const char* name_start = handlers_list;
NPT_String handler_name;
NPT_LogHandler* handler;
for (;;) {
if (*cursor == '\0' || *cursor == ',') {
if (cursor != name_start) {
handler_name.Assign(name_start, (NPT_Size)(cursor-name_start));
handler_name.Trim(" \t");
/* create a handler */
if (NPT_SUCCEEDED(
NPT_LogHandler::Create(logger->m_Name, handler_name, handler))) {
logger->AddHandler(handler);
}
}
if (*cursor == '\0') break;
name_start = cursor+1;
}
++cursor;
}
}
/* configure the forwarding */
NPT_String* forward = GetConfigValue(logger->m_Name,".forward");
if (forward && !ConfigValueIsBooleanTrue(*forward)) {
logger->m_ForwardToParent = false;
}
return NPT_SUCCESS;
}
示例15: while
/*----------------------------------------------------------------------
| NPT_Uri::PercentDecode
+---------------------------------------------------------------------*/
NPT_String
NPT_Uri::PercentDecode(const char* str)
{
NPT_String decoded;
// check args
if (str == NULL) return decoded;
// reserve at least the size of the current uri
decoded.Reserve(NPT_StringLength(str));
// process each character
while (unsigned char c = *str++) {
if (c == '%') {
// needs to be unescaped
unsigned char unescaped;
if (NPT_SUCCEEDED(NPT_HexToByte(str, unescaped))) {
decoded += unescaped;
str += 2;
} else {
// not a valid escape sequence, just keep the %
decoded += c;
}
} else {
// no unescaping required
decoded += c;
}
}
return decoded;
}