亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stageio.cc

?? 一個機器人平臺
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/* *  Stage : a multi-robot simulator. *  Copyright (C) 2001, 2002 Richard Vaughan, Andrew Howard and Brian Gerkey. * *  This program 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 2 of the License, or *  (at your option) any later version. * *  This program 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 this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * *//* * Desc: Stage client/server IO class * Author: Richard Vaughan * Date: 7 Dec 2000 * CVS info: $Id: stageio.cc,v 1.22 2002/11/09 02:32:34 rtv Exp $ */#if HAVE_CONFIG_H  #include <config.h>#endif//#define DEBUG//#define VERBOSE#include "server.hh"#include "entity.hh"#include "world.hh"//#include "bitmap.hh"#include "library.hh"#include <unistd.h>#include <string.h>#include <signal.h>#include "playerdevice.hh"//extern int g_timer_expired;void CatchSigPipe( int signo ); // from server.ccCStageIO::CStageIO( int argc, char** argv, Library* lib )  : CWorld( argc, argv, lib ){  m_port = DEFAULT_POSE_PORT;    for( int a=1; a<argc-1; a++ )  {    // get the port number, overriding the default    if( strcmp( argv[a], "-p" ) == 0 )    {      m_port = atoi(argv[a+1]);      printf( "[Port %d]", m_port );      a++;    }  }  // catch signals generated by socket closures  signal( SIGPIPE, CatchSigPipe );   // init the pose server data structures  m_pose_connection_count = 0;  m_sync_counter = 0;  m_external_sync_required = false;  // init the arrays  memset( &m_pose_connections, 0, sizeof(struct pollfd)*MAX_POSE_CONNECTIONS);   memset( m_dirty_subscribe, 0, sizeof(char) * MAX_POSE_CONNECTIONS );  memset( m_conn_type, 0, sizeof(char) * MAX_POSE_CONNECTIONS );}  CStageIO::~CStageIO( void ){  // close all connections  for( int i=0; i<m_pose_connection_count; i++ )    DestroyConnection( i );//close( m_pose_connections[i].fd );}int CStageIO::WriteHeader( int fd, HeaderType type, uint32_t data ){        stage_header_t hdr;    hdr.type = type;  hdr.data = data;   //puts( "attempting to write a header" );  int len = WritePacket( fd, (char*)&hdr, sizeof(hdr) );  //printf( "wrote %d header bytes\n", len );  return len;}int CStageIO::WriteCommand( int fd, cmd_t cmd ){  //puts( "attempting to write a command" );  int len = WriteHeader( fd, StageCommand, cmd );  //printf( "wrote %d command bytes\n", len );  return len;}int CStageIO::WritePacket( int fd, char* data, size_t len ){  size_t writecnt = 0;  int thiswritecnt;    //printf( "attempting to write %d byte packet\n", len );  while(writecnt < len )  {    thiswritecnt = write( fd, data+writecnt, len-writecnt);          // check for error on write    if( thiswritecnt == -1 )      return -1; // fail          writecnt += thiswritecnt;  }  //printf( "wrote %d/%d packet bytes\n", writecnt, len );  return len; //success}int CStageIO::ReadPacket( int fd, char* buf, size_t len ){  //printf( "attempting to read a %d byte packet\n", len );  assert( buf ); // data destination must be good  int recv = 0;  // read a header so we know what's coming  while( recv < (int)len )  {    //printf( "Reading on %d\n", fd );          /* read will block until it has some bytes to return */    int r = read( fd, buf+recv,  len - recv );          if( r == -1 ) // ERROR    {      if( errno != EINTR )	    {	      printf( "ReadPacket: read returned %d\n", r );	      perror( "code" );	      break;	    }    }    else if( r == 0 ) // EOF      break;     else      recv += r;  }        //printf( "read %d/%d bytes\n", recv, len );  return recv; // the number of bytes read}int CStageIO::WriteProperty( int fd, stage_property_t* prop, 			    char* data, size_t len ){  int res;    assert( prop );  assert( data );  assert( len > 0 ); // no point sending a property with no data  assert( prop->len == len ); // data size should match header len field  assert( prop->property < ENTITY_LAST_PROPERTY );  //puts( "attempting to write a property" );    res = WritePacket( fd, (char*)prop, sizeof(stage_property_t) );    //printf( "write %d/%d property header bytes\n", res,sizeof(stage_property_t));  //printf( "writing %d bytes of data\n", prop->len );    res = WritePacket( fd, data, len );  //printf( "wrote %d/%d bytes of property data\n", res, len );  return 0;}int CStageIO::ReadProperty( int fd, stage_property_t* prop, 			   char* data, size_t len ){  int res;  assert( prop );  assert( data );  //puts( "attempting to read a property" );    res = ReadPacket( fd, (char*)prop, sizeof(stage_property_t) );  //printf( "read %d/%d property header bytes\n", res, sizeof(stage_property_t));  //printf( "expecting %d bytes of data\n", prop->len );  // validity checks   assert( prop->property < ENTITY_LAST_PROPERTY );  assert( prop->len > 0 );  assert( prop->len < MAX_PROPERTY_DATA_LEN );  assert( prop->len < len ); // must be enough space for the data  // read data into the buffer  res = ReadPacket( fd, data, prop->len );  //printf( "read %d/%d bytes of property data\n", res, prop->len );  return 0;}int CStageIO::ReadProperties( int con, int fd, int num ){  stage_property_t prop;  char data[MAX_PROPERTY_DATA_LEN]; // XX define this somewhere    for( int i=0; i<num; i++ )  {    ReadProperty( fd, &prop, data, MAX_PROPERTY_DATA_LEN );          //printf( "attempting to set property %d of object %d"    //    "with %d bytes of data starting at %p\n",    //    prop.property, prop.id, prop.len, data );          // set the property    CEntity* ent = NULL;    printf( "looking up entity number %d\n", prop.id );    assert( ent = GetEntity( prop.id ) );      //ent->SetProperty( con, prop.property, (void*)data, prop.len );  }    return 0;}int CStageIO::ReadEntity( int fd, stage_entity_t* ent ){  assert( ent );    int res = ReadPacket( fd, (char*)ent, sizeof(stage_entity_t) );   return res;}int CStageIO::ReadEntities( int fd, int num ){  stage_entity_t ent;    for( int i=0; i<num; i++ )  {    ReadEntity( fd, &ent );         PRINT_DEBUG3( "attempting to create entity %d:%d:%s\n",		  ent.id, ent.parent, ent.token );        //CEntity* obj = 0;    if( ent.parent == -1 )      //assert( root = lib->CreateEntity( ent.type, this, 0 ) );      puts( "read root - no ent created" );    else      assert( lib->CreateEntity( ent.token, this,				 GetEntity(ent.parent)));  }    return 0;}int CStageIO::ReadBackground( int fd ){  PRINT_DEBUG( "" );  stage_background_t w;    int res = ReadPacket( fd, (char*)&w, sizeof(w) );    if( res == sizeof(w) )  {    // Construct a single fixed obstacle representing    // the environment.    //assert( this->root = (CEntity*)new CBitmap(this, NULL ) );        // poke the scale in from the data packet(ugly!)    //((CBitmap*)this->root)->scale = w.scale;        assert(this->matrix); // gotta have it before we can load the wall          // read in the pixel array    int num_pixels =  w.sizex * w.sizey;    unsigned char* pixels = 0;    assert( pixels = new unsigned char[ num_pixels ] );          printf( "Attempting to read %d pixels into %p on %d\n",            num_pixels, &pixels, fd );    int res2 = ReadPacket( fd, (char*)pixels, num_pixels );          if( res2 == num_pixels )    {      // create an image from the data      //assert( ((CBitmap*)this->root)->image =       //      new Nimage( pixels, w.sizex, w.sizey ) );                }    else    {      PRINT_ERR2( "short read (%d/%d pixels)\n", res2, num_pixels );      return -1;    }  }  else    PRINT_ERR2( "short read (%d/%d bytes)\n", res, sizeof(w) );    return res;}int CStageIO::WriteBackground( int fd ){  PRINT_DEBUG( "" );  /*  CBitmap* fix = dynamic_cast<CBitmap*>(this->root);    assert( fix );  //assert( fix->image );    assert( fix->bitmap_rects.size() > 0 );    // announce that a matrix is on its way  WriteHeader( fd, BackgroundPacket, 0);    stage_background_t b;    b.sizex = fix->image->get_width();  b.sizey = fix->image->get_height();  b.scale = fix->scale;  //b.pixel_count = this->root->image->count_pixels();  printf( "Downloading background (%p)\n", &b );     int res = WritePacket( fd, (char*)&b, sizeof(b) );    // write the Nimage data as a big packet - this should be improved  // to send only non-zero pixels to save bandwidth for large, sparse  // images  int num_pixels = b.sizex * b.sizey;  int res2 = WritePacket( fd, 			  (char*)fix->image->data, 			  num_pixels );  assert( res2 == num_pixels );  */  int res = 0;  return res;}int CStageIO::ReadMatrix( int fd ){  if( this->matrix )    delete this->matrix;  stage_matrix_t m;    int res = ReadPacket( fd, (char*)&m, sizeof(m) );   if( res == sizeof(m) )    this->matrix = new CMatrix( m.sizex, m.sizey, 10 );  else    PRINT_ERR2( "short read (%d/%d bytes)", res, sizeof(m) );   return res;}int CStageIO::WriteMatrix( int fd ){  assert( this->matrix );  // announce that a matrix is on its way  WriteHeader( fd,  MatrixPacket, 0);   stage_matrix_t m;    m.sizex = this->matrix->width;  m.sizey = this->matrix->height;  printf( "Downloading matrix (%p)\n", &m );     int res = WritePacket( fd, (char*)&m, sizeof(m) );    return res;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一激情一区二区三区| 99久久亚洲一区二区三区青草| 欧美日韩一区二区三区不卡| 亚洲伦在线观看| 91成人看片片| 日日夜夜精品视频天天综合网| 67194成人在线观看| 日韩精品每日更新| 欧美va亚洲va| 岛国一区二区三区| 亚洲免费观看高清在线观看| 欧美日韩国产系列| 久久99精品国产麻豆婷婷| 久久免费看少妇高潮| 99久精品国产| 午夜电影网亚洲视频| 日韩免费观看2025年上映的电影| 极品少妇一区二区三区精品视频| 国产精品色一区二区三区| 99国产精品一区| 日本色综合中文字幕| 久久久久久久一区| 一本到不卡精品视频在线观看| 亚洲成人资源网| 精品精品国产高清a毛片牛牛| 丁香婷婷综合网| 午夜伊人狠狠久久| 国产日韩精品久久久| 色诱亚洲精品久久久久久| 日本系列欧美系列| 国产精品美女久久久久久久| 欧美群妇大交群中文字幕| 国内成+人亚洲+欧美+综合在线 | 亚洲日本青草视频在线怡红院| 欧美在线短视频| 国产精品一卡二| 亚洲综合男人的天堂| 久久亚洲精精品中文字幕早川悠里| 色欧美片视频在线观看| 韩国女主播成人在线观看| 一区二区视频在线看| 精品国产乱码久久久久久浪潮 | 日韩精品视频网站| 亚洲欧洲日韩在线| 日韩一区二区电影在线| 色综合天天综合狠狠| 久久av资源站| 亚洲午夜在线电影| 国产精品免费观看视频| 日韩美女在线视频| 在线视频欧美精品| 不卡一区中文字幕| 韩国成人福利片在线播放| 三级欧美在线一区| 一区二区三区色| 国产精品久久久久9999吃药| 亚洲精品一区二区三区蜜桃下载| 精品视频一区二区三区免费| 99精品一区二区三区| 国产成人免费视| 国产综合一区二区| 精品一区二区三区免费视频| 污片在线观看一区二区| 洋洋av久久久久久久一区| 国产精品二区一区二区aⅴ污介绍| 精品久久久三级丝袜| 91精品国产欧美日韩| 欧美日韩午夜在线视频| 色吊一区二区三区| 色综合久久久网| 色94色欧美sute亚洲线路一ni| 大胆亚洲人体视频| 国产成人av电影免费在线观看| 狠狠色狠狠色综合| 久久99精品国产.久久久久| 蜜臀av亚洲一区中文字幕| 欧美aaa在线| 日产精品久久久久久久性色| 亚洲午夜一区二区三区| 亚洲一区二区三区四区在线 | 欧美videos大乳护士334| 欧美一区二区三区精品| 9191精品国产综合久久久久久| 精品视频一区二区不卡| 欧美一区二区三区色| 欧美一区二区福利视频| 91精品国产综合久久福利| 欧美一卡在线观看| 2021中文字幕一区亚洲| 欧美激情一区二区三区不卡| 亚洲图片自拍偷拍| 亚洲一区在线免费观看| 日本亚洲三级在线| 经典三级在线一区| 成av人片一区二区| 在线观看欧美日本| 欧美一区二区三区视频免费| 欧美成人在线直播| 日本一区二区视频在线观看| 亚洲图片激情小说| 亚洲国产婷婷综合在线精品| 日本成人中文字幕在线视频| 黄色日韩三级电影| 99国产欧美久久久精品| 欧美日韩国产综合视频在线观看| 欧美一区午夜精品| 久久久久高清精品| √…a在线天堂一区| 图片区日韩欧美亚洲| 国产美女一区二区| 91天堂素人约啪| 欧美男男青年gay1069videost| 26uuu成人网一区二区三区| 国产精品国产三级国产有无不卡 | 在线视频亚洲一区| 精品日韩av一区二区| 亚洲欧洲精品一区二区三区不卡| 国产酒店精品激情| 色偷偷一区二区三区| 日韩欧美国产综合一区 | 亚洲小说春色综合另类电影| 久久99精品网久久| 欧洲一区二区三区在线| 久久伊人中文字幕| 亚洲午夜精品久久久久久久久| 黑人巨大精品欧美一区| 色噜噜狠狠色综合中国| 久久久久久久综合日本| 亚洲欧美在线视频| 亚洲黄色小说网站| 国产麻豆成人传媒免费观看| 在线免费观看一区| 精品国免费一区二区三区| 亚洲成人精品一区二区| 成熟亚洲日本毛茸茸凸凹| 日韩一区二区在线观看视频 | 欧美人与性动xxxx| 亚洲欧美怡红院| 久久99精品国产| 91精品国产福利在线观看 | 久久久电影一区二区三区| 亚洲电影激情视频网站| 9久草视频在线视频精品| 日韩美女在线视频| 日本特黄久久久高潮| 欧美色成人综合| 亚洲视频一区二区免费在线观看| 国产乱子伦视频一区二区三区| 精品视频在线免费| 洋洋av久久久久久久一区| 成人久久18免费网站麻豆| 久久综合久久99| 精品一区精品二区高清| 欧美肥胖老妇做爰| 亚洲在线视频免费观看| 91蝌蚪porny| 国产精品激情偷乱一区二区∴| 成人中文字幕电影| 久久精品一区二区三区av| 精品一区二区三区在线观看 | 99九九99九九九视频精品| 国产三级欧美三级| 国产精品99久| 国产亚洲综合性久久久影院| 国内精品免费**视频| 欧美精品一区在线观看| 日产欧产美韩系列久久99| 666欧美在线视频| 日韩激情在线观看| 51午夜精品国产| 日韩专区在线视频| 欧美一区二区三区日韩视频| 日本va欧美va瓶| 日韩欧美中文字幕精品| 韩国av一区二区三区四区| 亚洲精品在线观| 粉嫩欧美一区二区三区高清影视| 国产精品伦理在线| 91视频你懂的| 亚洲国产精品精华液网站| 欧美日韩不卡视频| 极品少妇一区二区| 中文字幕av一区二区三区| 99精品视频免费在线观看| 亚洲欧美一区二区三区极速播放| 91色porny| 波多野结衣欧美| 一区二区在线观看av| 欧美日韩一卡二卡三卡| 麻豆精品蜜桃视频网站| 国产亚洲一区二区三区| 99免费精品在线| 亚洲第一狼人社区| 精品成人一区二区| 99re在线精品| 亚欧色一区w666天堂| 久久久三级国产网站| 91社区在线播放| 青青草原综合久久大伊人精品优势| 日韩欧美aaaaaa|