Begin adding MSRP public API functions.
Change sipevent to return the op handle instead of the op id.
This commit is contained in:
parent
908f9865bc
commit
299e397a9f
|
@ -65,6 +65,7 @@ tmsrp_header_From_Path_t;
|
|||
typedef tsk_list_t tmsrp_headers_From_Path_L_t;
|
||||
|
||||
tmsrp_header_From_Path_t *tmsrp_header_From_Path_parse(const char *data, size_t size);
|
||||
tmsrp_header_From_Path_t *tmsrp_header_From_Path_clone(const tmsrp_header_From_Path_t* From_Path);
|
||||
|
||||
TINYMSRP_GEXTERN const void *tmsrp_header_From_Path_def_t;
|
||||
|
||||
|
|
|
@ -65,6 +65,7 @@ tmsrp_header_To_Path_t;
|
|||
typedef tsk_list_t tmsrp_headers_To_Path_L_t;
|
||||
|
||||
tmsrp_header_To_Path_t *tmsrp_header_To_Path_parse(const char *data, size_t size);
|
||||
tmsrp_header_To_Path_t *tmsrp_header_To_Path_clone(const tmsrp_header_To_Path_t* );
|
||||
|
||||
TINYMSRP_GEXTERN const void *tmsrp_header_To_Path_def_t;
|
||||
|
||||
|
|
|
@ -76,7 +76,6 @@ TMSRP_BEGIN_DECLS
|
|||
#define TMSRP_MESSAGE_HAS_CONTENT(message) ((message) && (message)->Content && (message)->Content->data)
|
||||
#define TMSRP_MESSAGE_CONTENT(message) (TMSRP_MESSAGE_HAS_CONTENT(message) ? (message)->Content->data : 0)
|
||||
|
||||
|
||||
#define TMSRP_RESPONSE_IS(self, code) (TMSRP_RESPONSE_CODE((self)) == code)
|
||||
#define TMSRP_RESPONSE_IS_NXX(self, N) (TMSRP_MESSAGE_IS_RESPONSE((self)) && N##00<= TMSRP_RESPONSE_CODE((self)) && TMSRP_RESPONSE_CODE((self)) <= N##99)
|
||||
#define TMSRP_RESPONSE_IS_1XX(self) TMSRP_RESPONSE_IS_NXX(self, 1)
|
||||
|
@ -103,7 +102,7 @@ typedef struct tmsrp_message_s
|
|||
|
||||
tmsrp_message_type_t type;
|
||||
char* tid;
|
||||
union{
|
||||
/*union*/struct{
|
||||
struct{
|
||||
char* method;
|
||||
} request;
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright (C) 2009 Mamadou Diop.
|
||||
*
|
||||
* Contact: Mamadou Diop <diopmamadou@yahoo.fr>
|
||||
*
|
||||
* This file is part of Open Source Doubango Framework.
|
||||
*
|
||||
* DOUBANGO is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* DOUBANGO is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with DOUBANGO.
|
||||
*
|
||||
*/
|
||||
|
||||
/**@file tmsrp.h
|
||||
* @brief MSRP API.
|
||||
*
|
||||
* @author Mamadou Diop <diopmamadou(at)yahoo.fr>
|
||||
*
|
||||
* @date Created: Sat Nov 8 16:54:58 2009 mdiop
|
||||
*/
|
||||
#ifndef TINYMSRP_TMSRP_H
|
||||
#define TINYMSRP_TMSRP_H
|
||||
|
||||
#include "tinyMSRP_config.h"
|
||||
|
||||
#include "tinyMSRP/tmsrp_message.h"
|
||||
|
||||
TMSRP_BEGIN_DECLS
|
||||
|
||||
TINYMSRP_API tmsrp_request_t* tmsrp_create_bodiless();
|
||||
TINYMSRP_API tmsrp_response_t* tmsrp_create_response(const tmsrp_request_t* request, short status, const char* comment);
|
||||
TINYMSRP_API tmsrp_request_t* tmsrp_create_report(const tmsrp_request_t* request, short status, const char* reason);
|
||||
TINYMSRP_API int tmsrp_isReportRequired(const tmsrp_request_t* request);
|
||||
|
||||
TMSRP_END_DECLS
|
||||
|
||||
#endif /* TINYMSRP_TMSRP_H */
|
|
@ -116,7 +116,29 @@ tmsrp_header_From_Path_t *tmsrp_header_From_Path_parse(const char *data, size_t
|
|||
}
|
||||
|
||||
|
||||
tmsrp_header_From_Path_t *tmsrp_header_From_Path_clone(const tmsrp_header_From_Path_t* From_Path)
|
||||
{
|
||||
tmsrp_header_From_Path_t* clone = TMSRP_NULL;
|
||||
|
||||
if(!From_Path){
|
||||
goto bail;
|
||||
}
|
||||
|
||||
clone = TMSRP_HEADER_FROM_PATH_CREATE_NULL();
|
||||
clone->uri = tmsrp_uri_clone(From_Path->uri);
|
||||
if(From_Path->otherURIs){
|
||||
tsk_list_item_t *item;
|
||||
clone->otherURIs = TSK_LIST_CREATE();
|
||||
|
||||
tsk_list_foreach(item, From_Path->otherURIs){
|
||||
tmsrp_uri_t *uri = tmsrp_uri_clone(TMSRP_URI(item->data));
|
||||
tsk_list_push_back_data(clone->otherURIs, (void**)&uri);
|
||||
}
|
||||
}
|
||||
|
||||
bail:
|
||||
return clone;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -115,7 +115,29 @@ tmsrp_header_To_Path_t *tmsrp_header_To_Path_parse(const char *data, size_t size
|
|||
return header;
|
||||
}
|
||||
|
||||
tmsrp_header_To_Path_t *tmsrp_header_To_Path_clone(const tmsrp_header_To_Path_t* To_Path)
|
||||
{
|
||||
tmsrp_header_To_Path_t* clone = TMSRP_NULL;
|
||||
|
||||
if(!To_Path){
|
||||
goto bail;
|
||||
}
|
||||
|
||||
clone = TMSRP_HEADER_TO_PATH_CREATE_NULL();
|
||||
clone->uri = tmsrp_uri_clone(To_Path->uri);
|
||||
if(To_Path->otherURIs){
|
||||
tsk_list_item_t *item;
|
||||
clone->otherURIs = TSK_LIST_CREATE();
|
||||
|
||||
tsk_list_foreach(item, To_Path->otherURIs){
|
||||
tmsrp_uri_t *uri = tmsrp_uri_clone(TMSRP_URI(item->data));
|
||||
tsk_list_push_back_data(clone->otherURIs, (void**)&uri);
|
||||
}
|
||||
}
|
||||
|
||||
bail:
|
||||
return clone;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -309,7 +309,29 @@ _again:
|
|||
}
|
||||
|
||||
|
||||
tmsrp_header_From_Path_t *tmsrp_header_From_Path_clone(const tmsrp_header_From_Path_t* From_Path)
|
||||
{
|
||||
tmsrp_header_From_Path_t* clone = TMSRP_NULL;
|
||||
|
||||
if(!From_Path){
|
||||
goto bail;
|
||||
}
|
||||
|
||||
clone = TMSRP_HEADER_FROM_PATH_CREATE_NULL();
|
||||
clone->uri = tmsrp_uri_clone(From_Path->uri);
|
||||
if(From_Path->otherURIs){
|
||||
tsk_list_item_t *item;
|
||||
clone->otherURIs = TSK_LIST_CREATE();
|
||||
|
||||
tsk_list_foreach(item, From_Path->otherURIs){
|
||||
tmsrp_uri_t *uri = tmsrp_uri_clone(TMSRP_URI(item->data));
|
||||
tsk_list_push_back_data(clone->otherURIs, (void**)&uri);
|
||||
}
|
||||
}
|
||||
|
||||
bail:
|
||||
return clone;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -302,7 +302,29 @@ _again:
|
|||
return header;
|
||||
}
|
||||
|
||||
tmsrp_header_To_Path_t *tmsrp_header_To_Path_clone(const tmsrp_header_To_Path_t* To_Path)
|
||||
{
|
||||
tmsrp_header_To_Path_t* clone = TMSRP_NULL;
|
||||
|
||||
if(!To_Path){
|
||||
goto bail;
|
||||
}
|
||||
|
||||
clone = TMSRP_HEADER_TO_PATH_CREATE_NULL();
|
||||
clone->uri = tmsrp_uri_clone(To_Path->uri);
|
||||
if(To_Path->otherURIs){
|
||||
tsk_list_item_t *item;
|
||||
clone->otherURIs = TSK_LIST_CREATE();
|
||||
|
||||
tsk_list_foreach(item, To_Path->otherURIs){
|
||||
tmsrp_uri_t *uri = tmsrp_uri_clone(TMSRP_URI(item->data));
|
||||
tsk_list_push_back_data(clone->otherURIs, (void**)&uri);
|
||||
}
|
||||
}
|
||||
|
||||
bail:
|
||||
return clone;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,159 @@
|
|||
/*
|
||||
* Copyright (C) 2009 Mamadou Diop.
|
||||
*
|
||||
* Contact: Mamadou Diop <diopmamadou@yahoo.fr>
|
||||
*
|
||||
* This file is part of Open Source Doubango Framework.
|
||||
*
|
||||
* DOUBANGO is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* DOUBANGO is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with DOUBANGO.
|
||||
*
|
||||
*/
|
||||
|
||||
/**@file tmsrp.c
|
||||
* @brief MSRP API.
|
||||
*
|
||||
* @author Mamadou Diop <diopmamadou(at)yahoo.fr>
|
||||
*
|
||||
* @date Created: Sat Nov 8 16:54:58 2009 mdiop
|
||||
*/
|
||||
#include "tmsrp.h"
|
||||
|
||||
#include "tsk_time.h"
|
||||
#include "tsk_string.h"
|
||||
|
||||
#include <stdlib.h> /* rand() */
|
||||
|
||||
#define TMSR_DEFAULT_NAMESPACE 0 // "000"
|
||||
|
||||
tmsrp_request_t* tmsrp_create_bodiless()
|
||||
{
|
||||
/* RFC 4975 - 7.1. Constructing Requests
|
||||
Requests with no bodies are useful when a client wishes to send
|
||||
"traffic", but does not wish to send content to be rendered to the
|
||||
peer user. For example, the active endpoint sends a SEND request
|
||||
immediately upon establishing a connection. If it has nothing to
|
||||
say at the moment, it can send a request with no body. Bodiless
|
||||
requests may also be used in certain applications to keep Network
|
||||
Address Translation (NAT) bindings alive, etc.
|
||||
|
||||
Bodiless requests are distinct from requests with empty bodies. A
|
||||
request with an empty body will have a Content-Type header field
|
||||
value and will generally be rendered to the recipient according to
|
||||
the rules for that type.
|
||||
*/
|
||||
tmsrp_request_t* bodiless = TMSRP_NULL;
|
||||
tsk_istr_t tid;
|
||||
tsk_istr_t mid;
|
||||
|
||||
tsk_strrandom(&tid);
|
||||
tsk_strrandom(&mid);
|
||||
|
||||
if(!(bodiless = TMSRP_REQUEST_CREATE(tid, "SEND"))){
|
||||
goto bail;
|
||||
}
|
||||
//FIXME: To-Path
|
||||
//FIXME: From-Path
|
||||
|
||||
/* Message-ID */
|
||||
TMSRP_MESSAGE_ADD_HEADER(bodiless, TMSRP_HEADER_MESSAGE_ID_VA_ARGS(mid));
|
||||
|
||||
bail:
|
||||
return bodiless;
|
||||
}
|
||||
|
||||
tmsrp_response_t* tmsrp_create_response(const tmsrp_request_t* request, short status, const char* comment)
|
||||
{
|
||||
tmsrp_response_t* response = TMSRP_NULL;
|
||||
|
||||
if(!request){
|
||||
goto bail;
|
||||
}
|
||||
/* MSRP response will have the same tid ==> nothing to do */
|
||||
if(!(response = TMSRP_RESPONSE_CREATE(request->tid, status, comment))){
|
||||
goto bail;
|
||||
}
|
||||
/* reverse To-Path and From-Path */
|
||||
response->To = (tmsrp_header_To_Path_t*)tmsrp_header_From_Path_clone(request->From);
|
||||
TMSRP_HEADER(response->To)->type = tmsrp_htype_To_Path; /* as it's a clone we shall change type */
|
||||
response->From = (tmsrp_header_From_Path_t*)tmsrp_header_To_Path_clone(request->To);
|
||||
TMSRP_HEADER(response->From)->type = tmsrp_htype_From_Path; /* as it's a clone we shall change type */
|
||||
/* Byte-Range */
|
||||
response->ByteRange = tsk_object_ref((void*)request->ByteRange);
|
||||
|
||||
bail:
|
||||
return response;
|
||||
}
|
||||
|
||||
tmsrp_request_t* tmsrp_create_report(const tmsrp_request_t* request, short status, const char* reason)
|
||||
{
|
||||
/* RFC 4975 - 7.1.2. Sending REPORT Requests
|
||||
|
||||
* REPORT requests are similar to SEND requests, except that report
|
||||
* requests MUST NOT include Success-Report or Failure-Report header
|
||||
* fields, and MUST contain a Status header field. REPORT requests MUST
|
||||
* contain the Message-ID header field from the original SEND request.
|
||||
*/
|
||||
tmsrp_request_t* report = TMSRP_NULL;
|
||||
tsk_istr_t tid;
|
||||
|
||||
if(!request || !request->MessageID){
|
||||
goto bail;
|
||||
}
|
||||
|
||||
/* Generate new tid (Report has it's own tid) */
|
||||
tsk_strrandom(&tid);
|
||||
|
||||
/* MSRP response will have the same tid ==> nothing to do */
|
||||
if(!(report = TMSRP_REQUEST_CREATE(tid, "REPORT"))){
|
||||
goto bail;
|
||||
}
|
||||
|
||||
/* reverse To-Path and From-Path */
|
||||
report->To = (tmsrp_header_To_Path_t*)tmsrp_header_From_Path_clone(request->From);
|
||||
TMSRP_HEADER(report->To)->type = tmsrp_htype_To_Path; /* as it's a clone we shall change type */
|
||||
report->From = (tmsrp_header_From_Path_t*)tmsrp_header_To_Path_clone(request->To);
|
||||
TMSRP_HEADER(report->From)->type = tmsrp_htype_From_Path; /* as it's a clone we shall change type */
|
||||
/* Message ID */
|
||||
TMSRP_MESSAGE_ADD_HEADER(report, TMSRP_HEADER_MESSAGE_ID_VA_ARGS(request->MessageID->value));
|
||||
/* Byte-Range */
|
||||
report->ByteRange = tsk_object_ref((void*)request->ByteRange);
|
||||
/* Status */
|
||||
TMSRP_MESSAGE_ADD_HEADER(report, TMSRP_HEADER_STATUS_VA_ARGS(TMSR_DEFAULT_NAMESPACE, status, reason));
|
||||
|
||||
bail:
|
||||
return report;
|
||||
}
|
||||
|
||||
int tmsrp_isReportRequired(const tmsrp_request_t* request)
|
||||
{
|
||||
if(!request){
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Success Report. */
|
||||
if(request->SuccessReport && request->SuccessReport->yes){
|
||||
if(request->Status && (request->Status->code>199 && request->Status->code<300)){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Failure Report */
|
||||
if(!request->FailureReport || (request->FailureReport && request->FailureReport->type != freport_no)){
|
||||
if(request->Status && (request->Status->code<=199 && request->Status->code>=300)){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -261,7 +261,9 @@ int tmsrp_message_tostring(const tmsrp_message_t *self, tsk_buffer_t *output)
|
|||
tmsrp_header_tostring(TMSRP_HEADER(self->Status), output);
|
||||
}
|
||||
|
||||
/* All other headers (Other-Mime-headers)*/
|
||||
/* All other headers (Other-Mime-headers)
|
||||
- Should be empty if no content is added (see below) but ...
|
||||
*/
|
||||
{
|
||||
tsk_list_item_t *item;
|
||||
tsk_list_foreach(item, self->headers){
|
||||
|
@ -269,13 +271,19 @@ int tmsrp_message_tostring(const tmsrp_message_t *self, tsk_buffer_t *output)
|
|||
tmsrp_header_tostring(hdr, output);
|
||||
}
|
||||
}
|
||||
/* Content-Type */
|
||||
if(self->ContentType){
|
||||
tmsrp_header_tostring(TMSRP_HEADER(self->ContentType), output);
|
||||
}
|
||||
|
||||
/* RFC 4975 - 7.1. Constructing Requests
|
||||
A request with no body MUST NOT include a Content-Type or any other
|
||||
MIME-specific header fields. A request without a body MUST contain
|
||||
an end-line after the final header field. No extra CRLF will be
|
||||
present between the header section and the end-line.
|
||||
*/
|
||||
/* CONTENT */
|
||||
if(TMSRP_MESSAGE_HAS_CONTENT(self)){
|
||||
/* Content-Type */
|
||||
if(self->ContentType){
|
||||
tmsrp_header_tostring(TMSRP_HEADER(self->ContentType), output);
|
||||
}
|
||||
tsk_buffer_append(output, "\r\n", 2);
|
||||
tsk_buffer_append(output, TSK_BUFFER_TO_STRING(self->Content), TSK_BUFFER_SIZE(self->Content));
|
||||
tsk_buffer_append(output, "\r\n", 2);
|
||||
|
@ -349,13 +357,13 @@ static void* tmsrp_message_destroy(void * self)
|
|||
TSK_FREE(message->tid);
|
||||
|
||||
// request
|
||||
if(TMSRP_MESSAGE_IS_REQUEST(message)){
|
||||
//if(TMSRP_MESSAGE_IS_REQUEST(message)){
|
||||
TSK_FREE(message->line.request.method);
|
||||
}
|
||||
//}
|
||||
// response
|
||||
if(TMSRP_MESSAGE_IS_RESPONSE(message)){
|
||||
//if(TMSRP_MESSAGE_IS_RESPONSE(message)){
|
||||
TSK_FREE(message->line.response.comment);
|
||||
}
|
||||
//}
|
||||
|
||||
// Very common headers
|
||||
TSK_OBJECT_SAFE_FREE(message->To);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include "tsk.h"
|
||||
|
||||
#include "tmsrp.h"
|
||||
#include "tinyMSRP/parsers/tmsrp_parser_message.h"
|
||||
|
||||
#include "test_parser.h"
|
||||
|
|
|
@ -61,21 +61,73 @@ void test_parser()
|
|||
{
|
||||
tmsrp_message_t *message = 0;
|
||||
|
||||
//
|
||||
// Serialization / Deserialization
|
||||
//
|
||||
/* deserialize the message */
|
||||
if((message = tmsrp_message_parse(MSRP_MSG_TO_TEST, strlen(MSRP_MSG_TO_TEST)))){
|
||||
tsk_buffer_t *buffer = TSK_BUFFER_CREATE_NULL();
|
||||
|
||||
/* serialize the message */
|
||||
tmsrp_message_tostring(message, buffer);
|
||||
TSK_DEBUG_INFO("\nMSRP Message=\n%s", TSK_BUFFER_TO_STRING(buffer));
|
||||
TSK_DEBUG_INFO("\nMSRP Message=\n%s\n\n", TSK_BUFFER_TO_STRING(buffer));
|
||||
|
||||
TSK_OBJECT_SAFE_FREE(buffer);
|
||||
}
|
||||
else{
|
||||
TSK_DEBUG_ERROR("Failed to parse MSRP message.");
|
||||
TSK_DEBUG_ERROR("Failed to parse MSRP message(1).");
|
||||
}
|
||||
|
||||
TSK_OBJECT_SAFE_FREE(message);
|
||||
|
||||
//
|
||||
// Create Response from Request
|
||||
//
|
||||
if((message = tmsrp_message_parse(MSRP_MSG_REQUEST, strlen(MSRP_MSG_REQUEST)))){
|
||||
tsk_buffer_t *buffer = TSK_BUFFER_CREATE_NULL();
|
||||
tmsrp_response_t* response = tmsrp_create_response(message, 202, "Accepted");
|
||||
|
||||
tmsrp_message_tostring(response, buffer);
|
||||
TSK_DEBUG_INFO("\nMSRP Response=\n%s\n\n", TSK_BUFFER_TO_STRING(buffer));
|
||||
|
||||
TSK_OBJECT_SAFE_FREE(buffer);
|
||||
TSK_OBJECT_SAFE_FREE(response);
|
||||
}
|
||||
else{
|
||||
TSK_DEBUG_ERROR("Failed to parse MSRP message(2).");
|
||||
}
|
||||
TSK_OBJECT_SAFE_FREE(message);
|
||||
|
||||
//
|
||||
// Create Report from Request
|
||||
//
|
||||
if((message = tmsrp_message_parse(MSRP_MSG_REQUEST, strlen(MSRP_MSG_REQUEST)))){
|
||||
tsk_buffer_t *buffer = TSK_BUFFER_CREATE_NULL();
|
||||
tmsrp_request_t* report = tmsrp_create_report(message, 403, "Stop-sending-message");
|
||||
|
||||
tmsrp_message_tostring(report, buffer);
|
||||
TSK_DEBUG_INFO("\nMSRP Response=\n%s\n\n", TSK_BUFFER_TO_STRING(buffer));
|
||||
|
||||
TSK_OBJECT_SAFE_FREE(buffer);
|
||||
TSK_OBJECT_SAFE_FREE(report);
|
||||
}
|
||||
else{
|
||||
TSK_DEBUG_ERROR("Failed to parse MSRP message(2).");
|
||||
}
|
||||
TSK_OBJECT_SAFE_FREE(message);
|
||||
|
||||
//
|
||||
// Create bodiless Request
|
||||
//
|
||||
{
|
||||
tsk_buffer_t *buffer = TSK_BUFFER_CREATE_NULL();
|
||||
tmsrp_request_t* bodiless = tmsrp_create_bodiless();
|
||||
|
||||
tmsrp_message_tostring(bodiless, buffer);
|
||||
TSK_DEBUG_INFO("\nMSRP Bodiless=\n%s\n\n", TSK_BUFFER_TO_STRING(buffer));
|
||||
|
||||
TSK_OBJECT_SAFE_FREE(buffer);
|
||||
TSK_OBJECT_SAFE_FREE(bodiless);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* _TEST_MSRPPARSER_H */
|
||||
|
|
|
@ -165,7 +165,7 @@ tsk_object_t* tsk_object_ref(tsk_object_t *self)
|
|||
TSK_OBJECT_HEADER_GET(self)->refCount++;
|
||||
return self;
|
||||
}
|
||||
return 0;
|
||||
return TSK_NULL;
|
||||
}
|
||||
|
||||
/**@ingroup tsk_object_group
|
||||
|
|
|
@ -375,8 +375,8 @@ void tsk_itoa(int64_t i, tsk_istr_t *result)
|
|||
**/
|
||||
void tsk_strrandom(tsk_istr_t *result)
|
||||
{
|
||||
uint64_t epoch = tsk_time_epoch();
|
||||
tsk_itoa(epoch, result);
|
||||
static uint64_t __counter = 1;
|
||||
tsk_itoa((tsk_time_epoch() ^ rand()) ^ ++__counter, result);
|
||||
}
|
||||
|
||||
/**@ingroup tsk_string_group
|
||||
|
|
|
@ -55,7 +55,7 @@ typedef struct tsip_message_event_e
|
|||
}
|
||||
tsip_message_event_t;
|
||||
|
||||
int tsip_message_event_signal(tsip_message_event_type_t type, struct tsip_stack_s *stack, tsip_operation_id_t opid, short status_code, const char *phrase, const struct tsip_message_s* sipmessage);
|
||||
int tsip_message_event_signal(tsip_message_event_type_t type, struct tsip_stack_s *stack, tsip_operation_handle_t* operation, short status_code, const char *phrase, const struct tsip_message_s* sipmessage);
|
||||
|
||||
TINYSIP_GEXTERN const void *tsip_message_event_def_t;
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ typedef struct tsip_publish_event_e
|
|||
}
|
||||
tsip_publish_event_t;
|
||||
|
||||
int tsip_publish_event_signal(tsip_publish_event_type_t type, struct tsip_stack_s *stack, tsip_operation_id_t opid, short status_code, const char *phrase, const struct tsip_message_s* sipmessage);
|
||||
int tsip_publish_event_signal(tsip_publish_event_type_t type, struct tsip_stack_s *stack, tsip_operation_handle_t* operation, short status_code, const char *phrase, const struct tsip_message_s* sipmessage);
|
||||
|
||||
TINYSIP_GEXTERN const void *tsip_publish_event_def_t;
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ typedef struct tsip_register_event_e
|
|||
}
|
||||
tsip_register_event_t;
|
||||
|
||||
int tsip_register_event_signal(tsip_register_event_type_t type, struct tsip_stack_s *stack, tsip_operation_id_t opid, short status_code, const char *phrase, const struct tsip_message_s* sipmessage);
|
||||
int tsip_register_event_signal(tsip_register_event_type_t type, struct tsip_stack_s *stack, tsip_operation_handle_t* operation, short status_code, const char *phrase, const struct tsip_message_s* sipmessage);
|
||||
|
||||
TINYSIP_GEXTERN const void *tsip_register_event_def_t;
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ typedef struct tsip_subscribe_event_e
|
|||
}
|
||||
tsip_subscribe_event_t;
|
||||
|
||||
int tsip_subscribe_event_signal(tsip_subscribe_event_type_t type, struct tsip_stack_s *stack, tsip_operation_id_t opid, short status_code, const char *phrase, const struct tsip_message_s* sipmessage);
|
||||
int tsip_subscribe_event_signal(tsip_subscribe_event_type_t type, struct tsip_stack_s *stack, tsip_operation_handle_t* operation, short status_code, const char *phrase, const struct tsip_message_s* sipmessage);
|
||||
|
||||
TINYSIP_GEXTERN const void *tsip_subscribe_event_def_t;
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
TSIP_BEGIN_DECLS
|
||||
|
||||
#define TSIP_EVENT_CREATE(stack, opid, code, phrase, sipmessage, type) tsk_object_new(tsip_event_def_t, stack, opid, code, phrase, (const tsip_message_t*)sipmessage, type)
|
||||
#define TSIP_EVENT_CREATE(stack, operation, code, phrase, sipmessage, type) tsk_object_new(tsip_event_def_t, stack, operation, code, phrase, (const tsip_message_t*)sipmessage, type)
|
||||
|
||||
#define TSIP_EVENT(self) ((tsip_event_t*)(self))
|
||||
|
||||
|
@ -58,7 +58,7 @@ typedef struct tsip_event_s
|
|||
TSK_DECLARE_OBJECT;
|
||||
|
||||
struct tsip_stack_s * stack;
|
||||
tsip_operation_id_t opid;
|
||||
tsip_operation_handle_t* operation;
|
||||
|
||||
short code;
|
||||
char *phrase;
|
||||
|
@ -71,7 +71,7 @@ tsip_event_t;
|
|||
|
||||
TINYSIP_GEXTERN const void *tsip_event_def_t;
|
||||
|
||||
int tsip_event_init(tsip_event_t* self, struct tsip_stack_s *stack, tsip_operation_id_t opid, short code, const char *phrase, const struct tsip_message_s* sipmessage, tsip_event_type_t type);
|
||||
int tsip_event_init(tsip_event_t* self, struct tsip_stack_s *stack, tsip_operation_handle_t* operation, short code, const char *phrase, const struct tsip_message_s* sipmessage, tsip_event_type_t type);
|
||||
int tsip_event_deinit(tsip_event_t* self);
|
||||
|
||||
typedef int (*tsip_stack_callback)(const tsip_event_t *sipevent);
|
||||
|
|
|
@ -39,10 +39,10 @@
|
|||
|
||||
#define TSIP_MESSAGE_EVENT_CREATE( type) tsk_object_new(tsip_message_event_def_t, type)
|
||||
|
||||
int tsip_message_event_signal(tsip_message_event_type_t type, struct tsip_stack_s *stack, tsip_operation_id_t opid, short status_code, const char *phrase, const tsip_message_t* sipmessage)
|
||||
int tsip_message_event_signal(tsip_message_event_type_t type, struct tsip_stack_s *stack, tsip_operation_handle_t* operation, short status_code, const char *phrase, const tsip_message_t* sipmessage)
|
||||
{
|
||||
tsip_message_event_t* sipevent = TSIP_MESSAGE_EVENT_CREATE(type);
|
||||
tsip_event_init(TSIP_EVENT(sipevent), stack, opid, status_code, phrase, sipmessage, tsip_event_message);
|
||||
tsip_event_init(TSIP_EVENT(sipevent), stack, operation, status_code, phrase, sipmessage, tsip_event_message);
|
||||
|
||||
TSK_RUNNABLE_ENQUEUE_OBJECT(TSK_RUNNABLE(stack), sipevent);
|
||||
|
||||
|
|
|
@ -39,10 +39,10 @@
|
|||
|
||||
#define TSIP_PUBLISH_EVENT_CREATE( type) tsk_object_new(tsip_publish_event_def_t, type)
|
||||
|
||||
int tsip_publish_event_signal(tsip_publish_event_type_t type, struct tsip_stack_s *stack, tsip_operation_id_t opid, short status_code, const char *phrase, const tsip_message_t* sipmessage)
|
||||
int tsip_publish_event_signal(tsip_publish_event_type_t type, struct tsip_stack_s *stack, tsip_operation_handle_t* operation, short status_code, const char *phrase, const tsip_message_t* sipmessage)
|
||||
{
|
||||
tsip_publish_event_t* sipevent = TSIP_PUBLISH_EVENT_CREATE(type);
|
||||
tsip_event_init(TSIP_EVENT(sipevent), stack, opid, status_code, phrase, sipmessage, tsip_event_publish);
|
||||
tsip_event_init(TSIP_EVENT(sipevent), stack, operation, status_code, phrase, sipmessage, tsip_event_publish);
|
||||
|
||||
TSK_RUNNABLE_ENQUEUE_OBJECT(TSK_RUNNABLE(stack), sipevent);
|
||||
|
||||
|
|
|
@ -39,10 +39,10 @@
|
|||
|
||||
#define TSIP_REGISTER_EVENT_CREATE( type) tsk_object_new(tsip_register_event_def_t, type)
|
||||
|
||||
int tsip_register_event_signal(tsip_register_event_type_t type, struct tsip_stack_s *stack, tsip_operation_id_t opid, short status_code, const char *phrase, const tsip_message_t* sipmessage)
|
||||
int tsip_register_event_signal(tsip_register_event_type_t type, struct tsip_stack_s *stack, tsip_operation_handle_t* operation, short status_code, const char *phrase, const tsip_message_t* sipmessage)
|
||||
{
|
||||
tsip_register_event_t* sipevent = TSIP_REGISTER_EVENT_CREATE(type);
|
||||
tsip_event_init(TSIP_EVENT(sipevent), stack, opid, status_code, phrase, sipmessage, tsip_event_register);
|
||||
tsip_event_init(TSIP_EVENT(sipevent), stack, operation, status_code, phrase, sipmessage, tsip_event_register);
|
||||
|
||||
TSK_RUNNABLE_ENQUEUE_OBJECT(TSK_RUNNABLE(stack), sipevent);
|
||||
|
||||
|
|
|
@ -39,10 +39,10 @@
|
|||
|
||||
#define TSIP_SUBSCRIBE_EVENT_CREATE( type) tsk_object_new(tsip_subscribe_event_def_t, type)
|
||||
|
||||
int tsip_subscribe_event_signal(tsip_subscribe_event_type_t type, struct tsip_stack_s *stack, tsip_operation_id_t opid, short status_code, const char *phrase, const tsip_message_t* sipmessage)
|
||||
int tsip_subscribe_event_signal(tsip_subscribe_event_type_t type, struct tsip_stack_s *stack, tsip_operation_handle_t* operation, short status_code, const char *phrase, const tsip_message_t* sipmessage)
|
||||
{
|
||||
tsip_subscribe_event_t* sipevent = TSIP_SUBSCRIBE_EVENT_CREATE(type);
|
||||
tsip_event_init(TSIP_EVENT(sipevent), stack, opid, status_code, phrase, sipmessage, tsip_event_subscribe);
|
||||
tsip_event_init(TSIP_EVENT(sipevent), stack, operation, status_code, phrase, sipmessage, tsip_event_subscribe);
|
||||
|
||||
TSK_RUNNABLE_ENQUEUE_OBJECT(TSK_RUNNABLE(stack), sipevent);
|
||||
|
||||
|
|
|
@ -412,8 +412,7 @@ int tsip_dialog_response_send(const tsip_dialog_t *self, tsip_response_t* respon
|
|||
/* As this is a response ...then there should be a matching server transaction.
|
||||
*/
|
||||
const tsip_transac_t *transac = tsip_transac_layer_find_server(layer, response);
|
||||
if(transac)
|
||||
{
|
||||
if(transac){
|
||||
ret = transac->callback(transac, tsip_transac_outgoing_msg, response);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
#define DEBUG_STATE_MACHINE 1
|
||||
#define TSIP_DIALOG_MESSAGE_SIGNAL(self, type, code, phrase, message) \
|
||||
tsip_message_event_signal(type, TSIP_DIALOG_GET_STACK(self), tsip_operation_get_id(TSIP_DIALOG(self)->operation), code, phrase, message)
|
||||
tsip_message_event_signal(type, TSIP_DIALOG_GET_STACK(self), TSIP_DIALOG(self)->operation, code, phrase, message)
|
||||
|
||||
/* ======================== internal functions ======================== */
|
||||
int send_MESSAGE(tsip_dialog_message_t *self, tsip_request_t *request);
|
||||
|
@ -462,7 +462,7 @@ static void* tsip_dialog_message_create(void * self, va_list * app)
|
|||
tsk_fsm_set_callback_terminated(dialog->fsm, TSK_FSM_ONTERMINATED(tsip_dialog_message_OnTerminated), (const void*)dialog);
|
||||
|
||||
/* Initialize base class */
|
||||
tsip_dialog_init(TSIP_DIALOG(self), tsip_dialog_MESSAGE, stack, 0, operation);
|
||||
tsip_dialog_init(TSIP_DIALOG(self), tsip_dialog_MESSAGE, stack, TSIP_NULL, operation);
|
||||
|
||||
/* Initialize the class itself */
|
||||
tsip_dialog_message_init(self);
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
#define DEBUG_STATE_MACHINE 1
|
||||
#define TSIP_DIALOG_PUBLISH_TIMER_SCHEDULE(TX) TSIP_DIALOG_TIMER_SCHEDULE(publish, TX)
|
||||
#define TSIP_DIALOG_PUBLISH_SIGNAL(self, type, code, phrase, message) \
|
||||
tsip_publish_event_signal(type, TSIP_DIALOG_GET_STACK(self), tsip_operation_get_id(TSIP_DIALOG(self)->operation), code, phrase, message)
|
||||
tsip_publish_event_signal(type, TSIP_DIALOG_GET_STACK(self), TSIP_DIALOG(self)->operation, code, phrase, message)
|
||||
|
||||
/* ======================== internal functions ======================== */
|
||||
int send_publish(tsip_dialog_publish_t *self, refresh_type_t rtype);
|
||||
|
@ -631,7 +631,7 @@ static void* tsip_dialog_publish_create(void * self, va_list * app)
|
|||
tsk_fsm_set_callback_terminated(dialog->fsm, TSK_FSM_ONTERMINATED(tsip_dialog_publish_OnTerminated), (const void*)dialog);
|
||||
|
||||
/* init base class */
|
||||
tsip_dialog_init(TSIP_DIALOG(self), tsip_dialog_PUBLISH, stack, 0, operation);
|
||||
tsip_dialog_init(TSIP_DIALOG(self), tsip_dialog_PUBLISH, stack, TSIP_NULL, operation);
|
||||
|
||||
/* init the class itself */
|
||||
tsip_dialog_publish_init(self);
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
#define DEBUG_STATE_MACHINE 1
|
||||
#define TSIP_DIALOG_REGISTER_TIMER_SCHEDULE(TX) TSIP_DIALOG_TIMER_SCHEDULE(register, TX)
|
||||
#define TSIP_DIALOG_REGISTER_SIGNAL(self, type, code, phrase, message) \
|
||||
tsip_register_event_signal(type, TSIP_DIALOG_GET_STACK(self),tsip_operation_get_id(TSIP_DIALOG(self)->operation), code, phrase, message)
|
||||
tsip_register_event_signal(type, TSIP_DIALOG_GET_STACK(self), TSIP_DIALOG(self)->operation, code, phrase, message)
|
||||
|
||||
|
||||
/* ======================== internal functions ======================== */
|
||||
|
@ -778,7 +778,7 @@ static void* tsip_dialog_register_create(void * self, va_list * app)
|
|||
tsk_fsm_set_callback_terminated(dialog->fsm, TSK_FSM_ONTERMINATED(tsip_dialog_register_OnTerminated), (const void*)dialog);
|
||||
|
||||
/* Initialize base class */
|
||||
tsip_dialog_init(TSIP_DIALOG(self), tsip_dialog_REGISTER, stack, 0, operation);
|
||||
tsip_dialog_init(TSIP_DIALOG(self), tsip_dialog_REGISTER, stack, TSIP_NULL, operation);
|
||||
|
||||
/* Initialize the class itself */
|
||||
tsip_dialog_register_init(self);
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
#define DEBUG_STATE_MACHINE 1
|
||||
#define TSIP_DIALOG_SUBSCRIBE_TIMER_SCHEDULE(TX) TSIP_DIALOG_TIMER_SCHEDULE(subscribe, TX)
|
||||
#define TSIP_DIALOG_SUBSCRIBE_SIGNAL(self, type, code, phrase, message) \
|
||||
tsip_subscribe_event_signal(type, TSIP_DIALOG_GET_STACK(self), tsip_operation_get_id(TSIP_DIALOG(self)->operation), code, phrase, message)
|
||||
tsip_subscribe_event_signal(type, TSIP_DIALOG_GET_STACK(self), TSIP_DIALOG(self)->operation, code, phrase, message)
|
||||
|
||||
/* ======================== internal functions ======================== */
|
||||
int send_subscribe(tsip_dialog_subscribe_t *self);
|
||||
|
@ -643,7 +643,7 @@ static void* tsip_dialog_subscribe_create(void * self, va_list * app)
|
|||
tsk_fsm_set_callback_terminated(dialog->fsm, TSK_FSM_ONTERMINATED(tsip_dialog_subscribe_OnTerminated), (const void*)dialog);
|
||||
|
||||
/* Initialize base class */
|
||||
tsip_dialog_init(TSIP_DIALOG(self), tsip_dialog_SUBSCRIBE, stack, 0, operation);
|
||||
tsip_dialog_init(TSIP_DIALOG(self), tsip_dialog_SUBSCRIBE, stack, TSIP_NULL, operation);
|
||||
|
||||
/* Initialize the class itself */
|
||||
tsip_dialog_subscribe_init(self);
|
||||
|
|
|
@ -97,8 +97,7 @@ int tsip_transac_send(tsip_transac_t *self, const char *branch, const tsip_messa
|
|||
if(self && self->stack)
|
||||
{
|
||||
const tsip_transport_layer_t *layer = tsip_stack_get_transport_layer(self->stack);
|
||||
if(layer)
|
||||
{
|
||||
if(layer){
|
||||
return tsip_transport_layer_send(layer, branch, msg);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -383,8 +383,7 @@ int tsip_transac_nist_Proceeding_2_Proceeding_X_request(va_list *app)
|
|||
recently sent provisional response MUST be passed to the transport
|
||||
layer for retransmission.
|
||||
*/
|
||||
if(self->lastResponse)
|
||||
{
|
||||
if(self->lastResponse){
|
||||
tsip_transac_send(TSIP_TRANSAC(self), TSIP_TRANSAC(self)->branch, self->lastResponse);
|
||||
}
|
||||
|
||||
|
@ -431,8 +430,7 @@ int tsip_transac_nist_Completed_2_Completed_X_request(va_list *app)
|
|||
While in the "Completed" state, the server transaction MUST pass the final response to the transport
|
||||
layer for retransmission whenever a retransmission of the request is received.
|
||||
*/
|
||||
if(self->lastResponse)
|
||||
{
|
||||
if(self->lastResponse){
|
||||
tsip_transac_send(TSIP_TRANSAC(self), TSIP_TRANSAC(self)->branch, self->lastResponse);
|
||||
}
|
||||
|
||||
|
|
|
@ -134,10 +134,10 @@ static int tsip_transport_layer_stream_cb(const tnet_transport_event_t* e)
|
|||
}
|
||||
|
||||
if(message){
|
||||
/* Handle the incoming message. */
|
||||
ret = tsip_transport_layer_handle_incoming_msg(transport, message);
|
||||
/* Set fd */
|
||||
message->sockfd = e->fd;
|
||||
/* Alert transaction/dialog layer */
|
||||
ret = tsip_transport_layer_handle_incoming_msg(transport, message);
|
||||
}
|
||||
else ret = -15;
|
||||
|
||||
|
@ -171,9 +171,10 @@ static int tsip_transport_layer_dgram_cb(const tnet_transport_event_t* e)
|
|||
if(tsip_message_parse(&state, &message, TSIP_TRUE) == TSIP_TRUE
|
||||
&& message->firstVia && message->Call_ID && message->CSeq && message->From && message->To)
|
||||
{
|
||||
ret = tsip_transport_layer_handle_incoming_msg(transport, message);
|
||||
/* Set fd */
|
||||
message->sockfd = e->fd;
|
||||
/* Alert transaction/dialog layer */
|
||||
ret = tsip_transport_layer_handle_incoming_msg(transport, message);
|
||||
}
|
||||
TSK_OBJECT_SAFE_FREE(message);
|
||||
|
||||
|
@ -187,8 +188,7 @@ tsip_transport_t* tsip_transport_layer_find(const tsip_transport_layer_t* self,
|
|||
destIP = TSIP_STACK(self->stack)->proxy_cscf;
|
||||
*destPort = TSIP_STACK(self->stack)->proxy_cscf_port;
|
||||
|
||||
if(!self)
|
||||
{
|
||||
if(!self){
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -354,8 +354,7 @@ int tsip_transport_layer_send(const tsip_transport_layer_t* self, const char *br
|
|||
tsip_transport_t *transport = tsip_transport_layer_find(self, msg, destIP, &destPort);
|
||||
if(transport)
|
||||
{
|
||||
if(tsip_transport_send(transport, branch, TSIP_MESSAGE(msg), destIP, destPort))
|
||||
{
|
||||
if(tsip_transport_send(transport, branch, TSIP_MESSAGE(msg), destIP, destPort)){
|
||||
return 0;
|
||||
}
|
||||
else return -3;
|
||||
|
|
|
@ -477,22 +477,6 @@ int tsip_stack_set(tsip_stack_handle_t *self, ...)
|
|||
return -1;
|
||||
}
|
||||
|
||||
//int tsip_stack_alert(const tsip_stack_handle_t *self, tsip_operation_id_t opid, short status_code, char *reason_phrase, int incoming, tsip_event_type_t type)
|
||||
//{
|
||||
// if(self)
|
||||
// {
|
||||
// const tsip_stack_t *stack = self;
|
||||
//
|
||||
// TSK_RUNNABLE_ENQUEUE(TSK_RUNNABLE(stack), stack, opid, status_code, reason_phrase, incoming, type);
|
||||
// //tsip_event_t *event = TSIP_EVENT_CREATE(stack, opid, status_code, reason_phrase, incoming, type);
|
||||
// //TSK_RUNNABLE_ENQUEUE_OBJECT(TSK_RUNNABLE(stack), event);
|
||||
//
|
||||
// return 0;
|
||||
// }
|
||||
// return -1;
|
||||
//}
|
||||
|
||||
//#include "tsk_thread.h"
|
||||
int tsip_stack_stop(tsip_stack_handle_t *self)
|
||||
{
|
||||
if(self)
|
||||
|
|
|
@ -39,12 +39,12 @@
|
|||
|
||||
|
||||
|
||||
int tsip_event_init(tsip_event_t* self, struct tsip_stack_s *stack, tsip_operation_id_t opid, short code, const char *phrase, const tsip_message_t* sipmessage, tsip_event_type_t type)
|
||||
int tsip_event_init(tsip_event_t* self, struct tsip_stack_s *stack, tsip_operation_handle_t *operation, short code, const char *phrase, const tsip_message_t* sipmessage, tsip_event_type_t type)
|
||||
{
|
||||
if(self && stack)
|
||||
{
|
||||
self->stack = tsk_object_ref(stack);
|
||||
self->opid = opid;
|
||||
self->operation = tsk_object_ref(operation);
|
||||
self->code = code;
|
||||
tsk_strupdate(&(self->phrase), phrase);
|
||||
self->type = type;
|
||||
|
@ -61,9 +61,11 @@ int tsip_event_deinit(tsip_event_t* self)
|
|||
if(self)
|
||||
{
|
||||
TSK_OBJECT_SAFE_FREE(self->stack);
|
||||
TSK_OBJECT_SAFE_FREE(self->operation);
|
||||
|
||||
TSK_FREE(self->phrase);
|
||||
TSK_OBJECT_SAFE_FREE(self->sipmessage);
|
||||
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
|
@ -92,13 +94,13 @@ static void* tsip_event_create(void * self, va_list * app)
|
|||
{
|
||||
const tsip_message_t* sipmessage;
|
||||
tsip_stack_t *stack;
|
||||
tsip_operation_id_t opid;
|
||||
tsip_operation_handle_t *operation;
|
||||
short code;
|
||||
const char *phrase;
|
||||
tsip_event_type_t type;
|
||||
|
||||
stack = va_arg(*app, tsip_stack_handle_t *);
|
||||
opid = va_arg(*app, tsip_operation_id_t);
|
||||
operation = va_arg(*app, tsip_operation_handle_t*);
|
||||
|
||||
#if defined(__GNUC__)
|
||||
code = (short)va_arg(*app, int);
|
||||
|
@ -110,7 +112,7 @@ static void* tsip_event_create(void * self, va_list * app)
|
|||
sipmessage = va_arg(*app, const tsip_message_t*);
|
||||
type = va_arg(*app, tsip_event_type_t);
|
||||
|
||||
tsip_event_init(self, stack, opid, code, phrase, sipmessage, type);
|
||||
tsip_event_init(self, stack, operation, code, phrase, sipmessage, type);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
@ -118,8 +120,7 @@ static void* tsip_event_create(void * self, va_list * app)
|
|||
static void* tsip_event_destroy(void * self)
|
||||
{
|
||||
tsip_event_t *sipevent = self;
|
||||
if(sipevent)
|
||||
{
|
||||
if(sipevent){
|
||||
tsip_event_deinit(sipevent);
|
||||
}
|
||||
return self;
|
||||
|
|
|
@ -70,8 +70,11 @@
|
|||
int test_stack_callback(const tsip_event_t *sipevent)
|
||||
{
|
||||
TSK_DEBUG_INFO("\n====\nSTACK event: %d [%s] with opid=%lld\n=====",
|
||||
sipevent->code, sipevent->phrase, sipevent->opid);
|
||||
sipevent->code, sipevent->phrase, tsip_operation_get_id(sipevent->operation));
|
||||
|
||||
// For operations created by the stack ==> call tsk_object_ref(sipevent->operation);
|
||||
// to take ownership.
|
||||
|
||||
switch(sipevent->type)
|
||||
{
|
||||
//
|
||||
|
@ -223,8 +226,8 @@ int test_stack_callback(const tsip_event_t *sipevent)
|
|||
|
||||
void test_stack()
|
||||
{
|
||||
#define DOMAIN "ericsson.com"
|
||||
|
||||
//#define DOMAIN "ericsson.com"
|
||||
#define DOMAIN "micromethod.com"
|
||||
//#define DOMAIN "ims.inexbee.com"
|
||||
//#define DOMAIN "sip2sip.info"
|
||||
|
||||
|
@ -245,7 +248,7 @@ void test_stack()
|
|||
TSIP_STACK_SET_NETINFO("ADSL;utran-cell-id-3gpp=00000000"),
|
||||
TSIP_STACK_SET_PRIVACY("header;id"),
|
||||
*/
|
||||
|
||||
/*
|
||||
tsip_stack_handle_t *stack = tsip_stack_create(test_stack_callback,
|
||||
TSIP_STACK_SET_DISPLAY_NAME("Mamadou"),
|
||||
TSIP_STACK_SET_PUBLIC_IDENTITY("sip:mamadou@"DOMAIN),
|
||||
|
@ -262,7 +265,7 @@ void test_stack()
|
|||
TSIP_STACK_SET_DEVICE_ID("dd1289fa-c3d7-47bd-a40d-f1f1b2cc5ffc"),
|
||||
TSIP_STACK_SET_NETINFO("ADSL;utran-cell-id-3gpp=00000000"),
|
||||
TSIP_STACK_SET_PRIVACY("header;id"),
|
||||
|
||||
*/
|
||||
/*
|
||||
tsip_stack_handle_t *stack = tsip_stack_create(test_stack_callback,
|
||||
TSIP_STACK_SET_DISPLAY_NAME("Mamadou"),
|
||||
|
@ -272,17 +275,17 @@ void test_stack()
|
|||
TSIP_STACK_SET_REALM("sip:"DOMAIN), // FIXME: without sip:
|
||||
TSIP_STACK_SET_LOCAL_IP(LOCAL_IP),
|
||||
//TSIP_STACK_SET_DISCOVERY_NAPTR(1),
|
||||
TSIP_STACK_SET_PROXY_CSCF("pcscf.ims.inexbee.com", "tls", 0),
|
||||
TSIP_STACK_SET_PROXY_CSCF("pcscf.ims.inexbee.com", "tcp", 0),
|
||||
TSIP_STACK_SET_TLS_CERTS("C:\\tls\\ca.pki-crt.pem", "C:\\tls\\mamadou-crt.pem", "C:\\tls\\mamadou-key.pem"),
|
||||
//TSIP_STACK_SET_PROXY_CSCF("192.168.0.15", "udp", 0),
|
||||
TSIP_STACK_SET_PROXY_CSCF_PORT(4061),
|
||||
TSIP_STACK_SET_PROXY_CSCF_PORT(4060),
|
||||
//TSIP_STACK_SET_SECAGREE_IPSEC("hmac-md5-96", "null", "trans", "esp"),
|
||||
TSIP_STACK_SET_MOBILITY("fixed"),
|
||||
TSIP_STACK_SET_DEVICE_ID("dd1289fa-c3d7-47bd-a40d-f1f1b2cc5ffc"),
|
||||
TSIP_STACK_SET_NETINFO("ADSL;utran-cell-id-3gpp=00000000"),
|
||||
TSIP_STACK_SET_PRIVACY("header;id"),
|
||||
*/
|
||||
/*
|
||||
|
||||
tsip_stack_handle_t *stack = tsip_stack_create(test_stack_callback,
|
||||
TSIP_STACK_SET_DISPLAY_NAME("Mamadou"),
|
||||
TSIP_STACK_SET_PUBLIC_IDENTITY("sip:mamadou@"DOMAIN),
|
||||
|
@ -299,7 +302,7 @@ void test_stack()
|
|||
TSIP_STACK_SET_DEVICE_ID("dd1289fa-c3d7-47bd-a40d-f1f1b2cc5ffc"),
|
||||
TSIP_STACK_SET_NETINFO("ADSL;utran-cell-id-3gpp=00000000"),
|
||||
TSIP_STACK_SET_PRIVACY("header;id"),
|
||||
*/
|
||||
|
||||
TSIP_STACK_SET_NULL());
|
||||
|
||||
tsip_operation_handle_t *op = TSIP_OPERATION_CREATE(stack,
|
||||
|
@ -322,18 +325,18 @@ void test_stack()
|
|||
|
||||
tsk_thread_sleep(1000);
|
||||
|
||||
///* SUBSCRIBE */
|
||||
//{
|
||||
// tsip_operation_handle_t *op2 = TSIP_OPERATION_CREATE(stack,
|
||||
// TSIP_OPERATION_SET_HEADER("expires", "30"),
|
||||
// TSIP_OPERATION_SET_HEADER("Event", "reg"),
|
||||
// TSIP_OPERATION_SET_HEADER("Accept", "application/reginfo+xml"),
|
||||
// TSIP_OPERATION_SET_HEADER("Allow-Events", "refer, presence, presence.winfo, xcap-diff"),
|
||||
// TSIP_OPERATION_SET_HEADER("Allow", "INVITE, ACK, CANCEL, BYE, MESSAGE, OPTIONS, NOTIFY, PRACK, UPDATE, REFER"),
|
||||
//
|
||||
// TSIP_OPERATION_SET_NULL());
|
||||
// tsip_subscribe(stack, op2);
|
||||
//}
|
||||
/* SUBSCRIBE */
|
||||
{
|
||||
tsip_operation_handle_t *op2 = TSIP_OPERATION_CREATE(stack,
|
||||
TSIP_OPERATION_SET_HEADER("expires", "30"),
|
||||
TSIP_OPERATION_SET_HEADER("Event", "reg"),
|
||||
TSIP_OPERATION_SET_HEADER("Accept", "application/reginfo+xml"),
|
||||
TSIP_OPERATION_SET_HEADER("Allow-Events", "refer, presence, presence.winfo, xcap-diff"),
|
||||
TSIP_OPERATION_SET_HEADER("Allow", "INVITE, ACK, CANCEL, BYE, MESSAGE, OPTIONS, NOTIFY, PRACK, UPDATE, REFER"),
|
||||
|
||||
TSIP_OPERATION_SET_NULL());
|
||||
tsip_subscribe(stack, op2);
|
||||
}
|
||||
|
||||
/* MESSAGE */
|
||||
//{
|
||||
|
|
|
@ -338,7 +338,7 @@
|
|||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="source"
|
||||
Name="source(*.c)"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyHTTP\src\thttp.c"
|
||||
|
@ -422,7 +422,7 @@
|
|||
</Filter>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="include"
|
||||
Name="include(*.h)"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyHTTP\include\thttp.h"
|
||||
|
@ -510,7 +510,7 @@
|
|||
</Filter>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="abnf"
|
||||
Name="abnf(*.abnf)"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyHTTP\abnf\http.abnf"
|
||||
|
@ -526,7 +526,7 @@
|
|||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="ragel"
|
||||
Name="ragel(*.rl)"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyHTTP\ragel\thttp_machine_header.rl"
|
||||
|
|
|
@ -7,6 +7,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinySAK", "..\tinySAK\tinyS
|
|||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyNET", "..\tinyNET\tinyNET.vcproj", "{7522A458-92F4-4259-B906-E84C2A65D9F1}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcproj", "{C7732B19-4EF5-40EB-939B-4F1F5F2D3B18}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyHTTP", "..\tinyHTTP\tinyHTTP.vcproj", "{B3E45009-C7C3-4090-837C-2D30C9058443}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
|
@ -41,6 +45,22 @@ Global
|
|||
{7522A458-92F4-4259-B906-E84C2A65D9F1}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{7522A458-92F4-4259-B906-E84C2A65D9F1}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{7522A458-92F4-4259-B906-E84C2A65D9F1}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{C7732B19-4EF5-40EB-939B-4F1F5F2D3B18}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C7732B19-4EF5-40EB-939B-4F1F5F2D3B18}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C7732B19-4EF5-40EB-939B-4F1F5F2D3B18}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Win32
|
||||
{C7732B19-4EF5-40EB-939B-4F1F5F2D3B18}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C7732B19-4EF5-40EB-939B-4F1F5F2D3B18}.Release|Win32.Build.0 = Release|Win32
|
||||
{C7732B19-4EF5-40EB-939B-4F1F5F2D3B18}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Win32
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Release|Win32.Build.0 = Release|Win32
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{B3E45009-C7C3-4090-837C-2D30C9058443}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
@ -40,13 +40,16 @@
|
|||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""$(DOUBANGO_HOME)\tinyMSRP\include";"$(DOUBANGO_HOME)\tinyHTTP\include";"$(DOUBANGO_HOME)\tinySAK\src";"$(DOUBANGO_HOME)\thirdparties\win32\include""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TINYMSRP_EXPORTS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
|
@ -59,6 +62,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(OutDir)\tinySAK.lib $(OutDir)\tinyNET.lib $(OutDir)\tinyHTTP.lib"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
|
@ -121,7 +125,9 @@
|
|||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
|
@ -171,25 +177,117 @@
|
|||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="include"
|
||||
Name="include(*.h)"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\tinyMSRP_config.h"
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP_config.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\tmsrp.h"
|
||||
RelativePath="..\..\tinyMSRP\include\tmsrp.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\tmsrp_message.h"
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\tmsrp_message.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\tmsrp_uri.h"
|
||||
>
|
||||
</File>
|
||||
<Filter
|
||||
Name="headers"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Authentication-Info.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Authorization.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Byte-Range.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Content-Type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Dummy.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Expires.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Failure-Report.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_From-Path.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Max-Expires.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Message-ID.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Min-Expires.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Status.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Success-Report.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_To-Path.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_Use-Path.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\headers\tmsrp_header_WWW-Authenticate.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="parsers"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\parsers\tmsrp_parser_header.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\parsers\tmsrp_parser_message.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\include\tinyMSRP\parsers\tmsrp_parser_uri.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="source"
|
||||
Name="source(*.c)"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
|
@ -201,6 +299,174 @@
|
|||
RelativePath="..\..\tinyMSRP\src\tmsrp_message.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\tmsrp_uri.c"
|
||||
>
|
||||
</File>
|
||||
<Filter
|
||||
Name="headers"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Authentication-Info.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Authorization.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Byte-Range.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Content-Type.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Dummy.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Expires.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Failure-Report.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_From-Path.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Max-Expires.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Message-ID.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Min-Expires.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Status.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Success-Report.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_To-Path.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_Use-Path.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\headers\tmsrp_header_WWW-Authenticate.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="parsers"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\parsers\tmsrp_parser_message.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\src\parsers\tmsrp_parser_uri.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="abnf(*.abnf)"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="ragel(*.rl)"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_machine_utils.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Authentication-Info.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Authorization.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Byte-Range.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Content-Type.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Dummy.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Expires.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Failure-Report.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_From-Path.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Max-Expires.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Message-ID.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Min-Expires.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Status.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Success-Report.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_To-Path.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_header_Use-Path.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_message.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinyMSRP\ragel\tmsrp_parser_uri.rl"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
WarningLevel="3"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
|
@ -209,7 +210,9 @@
|
|||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
|
@ -339,7 +342,7 @@
|
|||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="source"
|
||||
Name="source(*.c)"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyNET\src\tnet.c"
|
||||
|
@ -527,7 +530,7 @@
|
|||
</Filter>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="include"
|
||||
Name="include(*.h)"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinyNET\src\tinyNET_config.h"
|
||||
|
|
|
@ -341,7 +341,7 @@
|
|||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="include"
|
||||
Name="include(*.h)"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
|
@ -467,7 +467,7 @@
|
|||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="source"
|
||||
Name="source(*.c)"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
|
|
|
@ -0,0 +1,220 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="test"
|
||||
ProjectGUID="{4555F4A7-6DC7-4844-9F3F-6AAB4443D4E9}"
|
||||
RootNamespace="test"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""$(DOUBANGO_HOME)\thirdparties\win32\include";"$(DOUBANGO_HOME)\\tinySDP\include";"$(DOUBANGO_HOME)\tinySAK\src""
|
||||
PreprocessorDefinitions="DEBUG_LEVEL=DEBUG_LEVEL_INFO;WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(OutDir)\tinySAK.lib $(OutDir)\tinySDP.lib"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="source"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\test\stdafx.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\test\test.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="include"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\test\stdafx.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\test\targetver.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="tests"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\test\test_parser.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
|
@ -0,0 +1,44 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinySDP", "tinySDP.vcproj", "{E45DB518-6562-4033-80E8-60030F0B169F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinySAK", "..\tinySAK\tinySAK.vcproj", "{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcproj", "{4555F4A7-6DC7-4844-9F3F-6AAB4443D4E9}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
Release|Win32 = Release|Win32
|
||||
Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{E45DB518-6562-4033-80E8-60030F0B169F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E45DB518-6562-4033-80E8-60030F0B169F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{E45DB518-6562-4033-80E8-60030F0B169F}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Win32
|
||||
{E45DB518-6562-4033-80E8-60030F0B169F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{E45DB518-6562-4033-80E8-60030F0B169F}.Release|Win32.Build.0 = Release|Win32
|
||||
{E45DB518-6562-4033-80E8-60030F0B169F}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Win32
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Release|Win32.Build.0 = Release|Win32
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{6BC9B796-10C6-4CF7-A6E4-E2DACCDA84DA}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
|
||||
{4555F4A7-6DC7-4844-9F3F-6AAB4443D4E9}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4555F4A7-6DC7-4844-9F3F-6AAB4443D4E9}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4555F4A7-6DC7-4844-9F3F-6AAB4443D4E9}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Win32
|
||||
{4555F4A7-6DC7-4844-9F3F-6AAB4443D4E9}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4555F4A7-6DC7-4844-9F3F-6AAB4443D4E9}.Release|Win32.Build.0 = Release|Win32
|
||||
{4555F4A7-6DC7-4844-9F3F-6AAB4443D4E9}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,462 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="tinySDP"
|
||||
ProjectGUID="{E45DB518-6562-4033-80E8-60030F0B169F}"
|
||||
RootNamespace="tinySDP"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""$(DOUBANGO_HOME)\thirdparties\win32\include";"$(DOUBANGO_HOME)\tinySAK\src";"$(DOUBANGO_HOME)\tinySDP\include""
|
||||
PreprocessorDefinitions="DEBUG_LEVEL=DEBUG_LEVEL_INFO;WIN32;_DEBUG;_WINDOWS;_USRDLL;TINYSDP_EXPORTS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(OutDir)\tinySAK.lib"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TINYSDP_EXPORTS"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="source(*.c)"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\tsdp.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\tsdp_message.c"
|
||||
>
|
||||
</File>
|
||||
<Filter
|
||||
Name="headers"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_A.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_B.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_C.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_Dummy.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_E.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_I.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_K.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_M.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_O.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_P.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_R.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_S.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_T.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_U.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_V.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\headers\tsdp_header_Z.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="parsers"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\src\parsers\tsdp_parser_message.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="include(*.h)"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinysdp_config.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tsdp.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\tsdp_message.h"
|
||||
>
|
||||
</File>
|
||||
<Filter
|
||||
Name="headers"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_A.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_B.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_C.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_Dummy.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_E.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_I.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_K.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_M.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_O.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_P.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_R.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_S.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_T.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_U.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_V.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\headers\tsdp_header_Z.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="parsers"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\parsers\tsdp_parser_header.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\include\tinySDP\parsers\tsdp_parser_message.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="ragel(*.rl)"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_machine_utils.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_A.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_B.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_C.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_Dummy.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_E.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_I.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_K.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_M.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_O.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_P.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_R.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_S.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_T.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_U.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_V.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_header_Z.rl"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\ragel\tsdp_parser_message.rl"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="abnf(*.abnf)"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\tinySDP\abnf\sdp.abnf"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
Loading…
Reference in New Issue