[Phission-cvs] phission/examples/cpp/phNetSourceDev/src phNetSource.cpp,1.1,1.2
Brought to you by:
pthoren
From: Philip T. <pt...@us...> - 2005-08-29 22:42:36
|
Update of /cvsroot/phission/phission/examples/cpp/phNetSourceDev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31613/src Modified Files: phNetSource.cpp Log Message: Progress, still not complete, won't compile Index: phNetSource.cpp =================================================================== RCS file: /cvsroot/phission/phission/examples/cpp/phNetSourceDev/src/phNetSource.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** phNetSource.cpp 28 Aug 2005 20:47:08 -0000 1.1 --- phNetSource.cpp 29 Aug 2005 22:42:28 -0000 1.2 *************** *** 75,82 **** this->m_port = 0; this->m_type = phNetTypeTCP; this->m_reconnect = 1; this->m_server_wait = 1; ! this->m_orig_format = phImageNOFORMAT; this->m_orig_height = 0; --- 75,83 ---- this->m_port = 0; this->m_type = phNetTypeTCP; + this->m_temp_path = NULL; this->m_reconnect = 1; this->m_server_wait = 1; ! this->m_orig_format = phImageNOFORMAT; this->m_orig_height = 0; *************** *** 204,216 **** /* ---------------------------------------------------------------------- */ ! int phNetSource::setPort( uint32_t port ) { ! phFUNCTION("phNetSource::setPort()") int locked = 0; phTHIS_LOCK(locked); ! this->m_port = port; phTHIS_UNLOCK_RET(locked,phSUCCESS,phFAIL); } --- 205,403 ---- /* ---------------------------------------------------------------------- */ ! int phNetSource::parsePath( const char *path, ! char **host_ptr, ! uint32_t *port_ptr, ! uint32_t *type_ptr ) { ! phFUNCTION("phNetSource::parsePath") ! ! int32_t i = 0; ! uint32_t type = phNetTypeTCP; ! uint32_t port = 22345; ! char *host = NULL; ! int32_t host_start = 0; ! int32_t host_length = 0; ! int32_t host_ptr_length = 0; ! int32_t length = (path != NULL) ? strlen(path) : 0; ! ! /* Find the first ':' */ ! for (i = 0; ((i < length) && (path[i] != ':')); i++ ); ! ! if (i >= length) ! { ! CHECK_RC(-1,NULL,"Invalid path string: %s", path); ! } ! ! if (strncmp("tcp",&(path[0]),i) == 0) ! { ! type = phNetTypeTCP; ! } ! else ! { ! type = phNetTypeUNKNOWN; ! } ! ! /* Go past the "//" to the host */ ! for (i++; ((i < length) && (path[i] != '/')); i++ ); ! for (i++; ((i < length) && (path[i] != '/')); i++ ); ! ! if (i >= length) ! { ! CHECK_RC(-1,NULL,"Invalid path string: %s", path); ! } ! ! /* Parse out the host */ ! for (i++, host_start = i, host_length = -1; ! ((i < length) && (path[i] != ':')); ! i++, host_length++ ); ! ! if ((i >= length) || (host_length <= 0)) ! { ! CHECK_RC(-1,NULL,"Invalid path string: %s", path); ! } ! ! host = (char *)phCalloc((host_length + 2),sizeof(char)); ! CHECK_PTR(host,"phCalloc", ! "phCalloc failed to allocate host string buffer of length %d", ! host_length ); ! ! snprintf(host,host_length,"%s",&(path[host_start])); ! ! /* Get the port from the end of the line */ ! port = atoi(&(path[++i])); ! ! if (host_ptr != NULL) ! { ! /* Figure out the path length */ ! host_ptr_length = (*host_ptr) != NULL ? strlen(*host_ptr) : 0; ! ! /* allocate enough space for the path */ ! phDALLOC((*host_ptr),host_ptr_length,(host_length+2),char); ! ! snprintf(*host_ptr,host_length,"%s",host); ! } ! ! /* Assign the values through the return pointers */ ! if (type_ptr != NULL) ! *type_ptr = type; ! if (port_ptr != NULL) ! *port_ptr = port; ! ! phFree(host); ! ! return phSUCCESS; ! error: ! phFree(host); ! ! return phFAIL; ! } ! ! /* ---------------------------------------------------------------------- */ ! /* makePath : ! * ! * This function allocates space to *path, be sure to free it */ ! /* ---------------------------------------------------------------------- */ ! int phNetSource::makePath( const char *host, ! uint32_t port, ! uint32_t type, ! char **path ) ! { ! phFUNCTION("phNetSource::makePath") ! ! uint32_t pathLength = 0; ! uint32_t length = 0; ! uint32_t host_length = 0; ! uint32_t type_length = 0; ! char * type_string = NULL; ! ! if (path == NULL) return phFAIL; ! ! /* Default to the local machine */ ! if (host == NULL) ! { ! host = "localhost"; ! } ! host_length = strlen(host); ! ! /* make sure the path is valid */ ! port = (port != 0) ? ((port < 65535) ? port : 22345) : 22345; ! ! /* Set up the type string */ ! switch (type) ! { ! case phNetTypeTCP: ! default: ! type_string = "tcp://"; ! break; ! } ! type_length = strlen(type_string); ! ! length = type_length + host_length + 1 + 7; ! ! /* Figure out the path length */ ! pathLength = (*path) != NULL ? strlen(*path) : 0; ! ! /* allocate enough space for the path */ ! phDALLOC((*path),pathLength,length,char); ! ! sprintf(*path,"%s%s:%u", ! type_string, ! host, ! port ); ! return phSUCCESS; ! error: ! return phFAIL; ! } ! /* ---------------------------------------------------------------------- */ ! int phNetSource::setHost( const char *host ) ! { ! phFUNCTION("phNetSource::setHost") int locked = 0; phTHIS_LOCK(locked); ! rc = phNetSource::makePath( host, ! this->m_port, ! this->m_type, ! &this->m_temp_path); ! CHECK_RC(rc,NULL,"phNetSource::makePath"); ! ! rc = this->setPath(this->m_temp_path); ! CHECK_RC(rc,NULL,"this->setPath(%s)",this->m_temp_path); ! ! phTHIS_UNLOCK_RET(locked,phSUCCESS,phFAIL); ! } ! ! /* ---------------------------------------------------------------------- */ ! const char *phNetSource::getHost( ) ! { ! phFUNCTION("phNetSource::getHost") ! int locked = 0; ! char *retval = NULL; ! ! phTHIS_LOCK(locked); ! ! retval = this->m_host; + phTHIS_UNLOCK_RET(locked,((const char *)retval),NULL); + } + + /* ---------------------------------------------------------------------- */ + int phNetSource::setPort( uint32_t port ) + { + phFUNCTION("phNetSource::setPort") + int locked = 0; + + phTHIS_LOCK(locked); + + rc = phNetSource::makePath( this->m_host, + port, + this->m_type, + &this->m_temp_path); + CHECK_RC(rc,NULL,"phNetSource::makePath"); + + rc = this->setPath(this->m_temp_path); + CHECK_RC(rc,NULL,"this->setPath(%s)",this->m_temp_path); + phTHIS_UNLOCK_RET(locked,phSUCCESS,phFAIL); } *************** *** 219,223 **** uint32_t phNetSource::getPort( ) { ! phFUNCTION("phNetSource::getPort()") int locked = 0; uint32_t retval = 0; --- 406,410 ---- uint32_t phNetSource::getPort( ) { ! phFUNCTION("phNetSource::getPort") int locked = 0; uint32_t retval = 0; *************** *** 231,234 **** --- 418,554 ---- /* ---------------------------------------------------------------------- */ + int phNetSource::setReconnect( int reconnect ) + { + phFUNCTION("phNetSource::setReconnect") + int locked = 0; + + phTHIS_LOCK(locked); + + this->m_reconnect = reconnect; + + phTHIS_UNLOCK_RET(locked,phSUCCESS,phFAIL); + } + + /* ---------------------------------------------------------------------- */ + int phNetSource::getReconnect( ) + { + phFUNCTION("phNetSource::getReconnect") + int locked = 0; + int retval = 0; + + phTHIS_LOCK(locked); + + retval = this->m_reconnect; + + phTHIS_UNLOCK_RET(locked,retval,0); + } + + /* ---------------------------------------------------------------------- */ + int phNetSource::setServerWait( int wait ) + { + phFUNCTION("phNetSource::setServerWait") + int locked = 0; + + phTHIS_LOCK(locked); + + this->m_server_wait = wait; + + phTHIS_UNLOCK_RET(locked,phSUCCESS,phFAIL); + } + + /* ---------------------------------------------------------------------- */ + int phNetSource::getServerWait( ) + { + phFUNCTION("phNetSource::getServerWait") + int locked = 0; + int retval = 0; + + phTHIS_LOCK(locked); + + retval = this->m_server_wait; + + phTHIS_UNLOCK_RET(locked,retval,0); + } + + /* ---------------------------------------------------------------------- */ + int phNetSource::getOriginal( uint32_t *format, + uint32_t *height, + uint32_t *width, + uint32_t *size ) + { + phFUNCTION("phNetSource::getOriginal") + int locked = 0; + + phMUTEX_LOCK(this->m_orig_lock,locked); + + if (format != NULL) + *format = this->m_orig_format; + if (height != NULL) + *height = this->m_orig_height; + if (width != NULL) + *width = this->m_orig_width; + if (size != NULL) + *size = this->m_orig_size; + + phMUTEX_UNLOCK_RET(this->m_orig_lock,locked,phSUCCESS,phFAIL); + } + + /* ---------------------------------------------------------------------- */ + uint32_t phNetSource::getOriginalFormat() + { + phFUNCTION("phNetSource::getOriginalFormat") + int locked = 0; + uint32_t retval = 0; + + phMUTEX_LOCK(this->m_orig_lock,locked); + + retval = this->m_orig_format; + + phMUTEX_UNLOCK_RET(this->m_orig_lock,locked,retval,0); + } + + /* ---------------------------------------------------------------------- */ + uint32_t phNetSource::getOriginalHeight() + { + phFUNCTION("phNetSource::getOriginalHeight") + int locked = 0; + uint32_t retval = 0; + + phMUTEX_LOCK(this->m_orig_lock,locked); + + retval = this->m_orig_height; + + phMUTEX_UNLOCK_RET(this->m_orig_lock,locked,retval,0); + } + + /* ---------------------------------------------------------------------- */ + uint32_t phNetSource::getOriginalWidth() + { + phFUNCTION("phNetSource::getOriginalWidth") + int locked = 0; + uint32_t retval = 0; + + phMUTEX_LOCK(this->m_orig_lock,locked); + + retval = this->m_orig_width; + + phMUTEX_UNLOCK_RET(this->m_orig_lock,locked,retval,0); + } + + /* ---------------------------------------------------------------------- */ + uint32_t phNetSource::getOriginalSize() + { + phFUNCTION("phNetSource::getOriginalSize") + int locked = 0; + uint32_t retval = 0; + + phMUTEX_LOCK(this->m_orig_lock,locked); + + retval = this->m_orig_size; + + phMUTEX_UNLOCK_RET(this->m_orig_lock,locked,retval,0); + } + + /* ---------------------------------------------------------------------- */ int phNetSource::onApplySettings() { *************** *** 312,336 **** i = ph_int32_array_get_length(this->m_changed_array); PROGRESS("ch_p:%d ch_init:%d running:%d open:%d length:%u\n", ! ch_p,ch_init,this->isRunning(),this->m_stream_open,i); */ if (((ch_p > 0) || (ch_init > 0)) && ! ((!(this->isRunning())) && (!(this->m_stream_open)))) { ! /* Copy the width and height settings into the object */ ! rc = this->openStream(1); ! ! if ((this->m_info != NULL) && (this->m_stream_open)) ! { ! if (this->m_info->m_width > 0) ! { ! this->m_width = this->m_info->m_width; ! } ! if (this->m_info->m_height > 0) ! { ! this->m_height = this->m_info->m_height; ! } ! } ! /*PRINT("rc:%d %u:%u\n",rc,this->m_width,this->m_height);*/ ! rc = this->closeStream(); retrc = 1; --- 632,641 ---- i = ph_int32_array_get_length(this->m_changed_array); PROGRESS("ch_p:%d ch_init:%d running:%d open:%d length:%u\n", ! ch_p,ch_init,this->isRunning(),this->m_is_open,i); */ if (((ch_p > 0) || (ch_init > 0)) && ! ((!(this->isRunning())) && (!(this->m_is_open)))) { ! retrc = 1; *************** *** 349,353 **** int phNetSource::cleanup() { ! phFUNCTION("phNetSource::cleanup()") rc = this->lock(); --- 654,658 ---- int phNetSource::cleanup() { ! phFUNCTION("phNetSource::cleanup") rc = this->lock(); |