Update of /cvsroot/playerstage/code/player/client_libs/libplayerc
In directory 
sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25517/client_libs/libplayerc

Modified Files:
        client.c dev_blackboard.c playerc.h 
Log Message:
fix for peek behaviour in pull mode
updates for the blackboard interface


Index: client.c
===================================================================
RCS file: /cvsroot/playerstage/code/player/client_libs/libplayerc/client.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -C2 -d -r1.86 -r1.87
*** client.c    2 Nov 2007 18:09:20 -0000       1.86
--- client.c    26 Nov 2007 22:14:59 -0000      1.87
***************
*** 517,528 ****
  }
  
! // Test to see if there is pending data.
  int playerc_client_peek(playerc_client_t *client, int timeout)
  {
    int count;
    struct pollfd fd;
- 
    playerc_client_item_t *item;
! 
    if (client->sock < 0)
    {
--- 517,538 ----
  }
  
! // Test to see if there is pending data. Send a data request if one has
! // not been sent already.
  int playerc_client_peek(playerc_client_t *client, int timeout)
  {
+   if (!client->data_requested)
+   {
+         playerc_client_requestdata(client);
+   }
+   return playerc_client_internal_peek(client, timeout);
+ }
+ 
+ // Test to see if there is pending data. Don't send a data request.
+ int playerc_client_internal_peek(playerc_client_t *client, int timeout)
+ {
    int count;
    struct pollfd fd;
    playerc_client_item_t *item;
!   
    if (client->sock < 0)
    {
***************
*** 531,535 ****
    }
  
- 
    if (client->qlen > 0)
    {
--- 541,544 ----
***************
*** 585,589 ****
      nanosleep(&sleeptime,NULL);
    }
- 
    return(ret);
  }
--- 594,597 ----
***************
*** 599,603 ****
    {
      // If there is no queued data, peek at the socket
!     if(playerc_client_peek(client,0) <= 0)
        return NULL;
      // There's data on the socket, so read a packet (blocking).
--- 607,611 ----
    {
      // If there is no queued data, peek at the socket
!     if(playerc_client_internal_peek(client,0) <= 0)
        return NULL;
      // There's data on the socket, so read a packet (blocking).
***************
*** 605,609 ****
        return NULL;
    }
! 
    while (true)
    {
--- 613,617 ----
        return NULL;
    }
!   
    while (true)
    {
***************
*** 653,657 ****
      {
        // If there is no queued data, peek at the socket
!       if(playerc_client_peek(client,0) <= 0)
          return NULL;
        // There's data on the socket, so read a packet (blocking).
--- 661,665 ----
      {
        // If there is no queued data, peek at the socket
!       if(playerc_client_internal_peek(client,0) <= 0)
          return NULL;
        // There's data on the socket, so read a packet (blocking).
***************
*** 724,728 ****
      int peek;
      gettimeofday(&last,NULL);
!     peek = playerc_client_peek(client,10);
      gettimeofday(&curr,NULL);
      t -= ((curr.tv_sec + curr.tv_usec/1e6) -
--- 732,736 ----
      int peek;
      gettimeofday(&last,NULL);
!     peek = playerc_client_internal_peek(client,10);
      gettimeofday(&curr,NULL);
      t -= ((curr.tv_sec + curr.tv_usec/1e6) -

Index: playerc.h
===================================================================
RCS file: /cvsroot/playerstage/code/player/client_libs/libplayerc/playerc.h,v
retrieving revision 1.239
retrieving revision 1.240
diff -C2 -d -r1.239 -r1.240
*** playerc.h   2 Nov 2007 18:09:20 -0000       1.239
--- playerc.h   26 Nov 2007 22:14:59 -0000      1.240
***************
*** 681,685 ****
      uint16_t index, uint16_t sequence, uint8_t * resptype, uint8_t * 
resp_data, int resp_len);
  */
! /** @brief Test to see if there is pending data.
  
  @param client Pointer to client object.
--- 681,686 ----
      uint16_t index, uint16_t sequence, uint8_t * resptype, uint8_t * 
resp_data, int resp_len);
  */
! /** @brief Test to see if there is pending data. Send a data request if one 
has not been sent already.
!  * A data request is necessary to provoke a response from the server.
  
  @param client Pointer to client object.
***************
*** 693,696 ****
--- 694,711 ----
  int playerc_client_peek(playerc_client_t *client, int timeout);
  
+ /** @brief Test to see if there is pending data. Don't send a request for 
data.
+  * This function is reliant on a call being made elsewhere to request data 
from
+  * the server.
+ 
+ @param client Pointer to client object.
+ 
+ @param timeout Timeout value (ms).  Set timeout to 0 to check for
+ currently queued data.
+ 
+ @returns Returns -1 on error, 0 or 1 otherwise.
+ 
+ */
+ int playerc_client_internal_peek(playerc_client_t *client, int timeout);
+ 
  /** @brief Read data from the server (blocking).
  
***************
*** 1125,1128 ****
--- 1140,1145 ----
  int playerc_blackboard_set_entry(playerc_blackboard_t *device, 
player_blackboard_entry_t* entry);
  
+ player_blackboard_entry_t 
playerc_blackboard_subscribe_to_key2(playerc_blackboard_t *device, const char* 
key);
+ 
  /** @} */
  

Index: dev_blackboard.c
===================================================================
RCS file: 
/cvsroot/playerstage/code/player/client_libs/libplayerc/dev_blackboard.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** dev_blackboard.c    31 Oct 2007 01:18:42 -0000      1.4
--- dev_blackboard.c    26 Nov 2007 22:14:59 -0000      1.5
***************
*** 53,59 ****
  #include <libplayerxdr/playerxdr.h>
  
! void playerc_blackboard_putmsg(playerc_blackboard_t *device,
!                                player_msghdr_t *header,
!                                player_blackboard_entry_t *data, size_t len);
  
  // Create a new blackboard proxy
--- 53,57 ----
  #include <libplayerxdr/playerxdr.h>
  
! void playerc_blackboard_putmsg(playerc_blackboard_t *device, player_msghdr_t 
*header, player_blackboard_entry_t *data, size_t len);
  
  // Create a new blackboard proxy
***************
*** 90,95 ****
  
  // Subscribe to a blackboard key
! int playerc_blackboard_subscribe_to_key(playerc_blackboard_t* device, const 
char* key,
!               player_blackboard_entry_t** entry_out)
  {
        player_blackboard_entry_t req;
--- 88,92 ----
  
  // Subscribe to a blackboard key
! int playerc_blackboard_subscribe_to_key(playerc_blackboard_t* device, const 
char* key, player_blackboard_entry_t** entry_out)
  {
        player_blackboard_entry_t req;
***************
*** 98,106 ****
        req.key_count = strlen(key) + 1;
  
!       if (playerc_client_request(
!               device->info.client,
!               &device->info,
!               PLAYER_BLACKBOARD_REQ_SUBSCRIBE_TO_KEY,
!               &req, entry_out) < 0)
        {
                free(req.key);
--- 95,100 ----
        req.key_count = strlen(key) + 1;
  
!       if (playerc_client_request(device->info.client, &device->info, 
!       PLAYER_BLACKBOARD_REQ_SUBSCRIBE_TO_KEY, &req, entry_out) < 0)
        {
                free(req.key);
***************
*** 121,130 ****
        req.key_count = strlen(key) + 1;
  
!       if (playerc_client_request(
!               device->info.client,
!               &device->info,
!               PLAYER_BLACKBOARD_REQ_UNSUBSCRIBE_FROM_KEY,
!               &req,
!               NULL) < 0)
        {
                free(req.key);
--- 115,120 ----
        req.key_count = strlen(key) + 1;
  
!       if (playerc_client_request(device->info.client, &device->info, 
!       PLAYER_BLACKBOARD_REQ_UNSUBSCRIBE_FROM_KEY, &req, NULL) < 0)
        {
                free(req.key);
***************
*** 141,149 ****
  int playerc_blackboard_set_entry(playerc_blackboard_t *device, 
player_blackboard_entry_t* entry)
  {
!       if (playerc_client_request(
!               device->info.client,
!               &device->info,
!               PLAYER_BLACKBOARD_REQ_SET_ENTRY,
!               entry, NULL) < 0)
        {
                PLAYERC_ERR("failed to set blackboard key");
--- 131,136 ----
  int playerc_blackboard_set_entry(playerc_blackboard_t *device, 
player_blackboard_entry_t* entry)
  {
!       if (playerc_client_request(device->info.client, &device->info, 
!       PLAYER_BLACKBOARD_REQ_SET_ENTRY, entry, NULL) < 0)
        {
                PLAYERC_ERR("failed to set blackboard key");
***************
*** 154,160 ****
  }
  
! void playerc_blackboard_putmsg(playerc_blackboard_t *device,
!                                player_msghdr_t *header,
!                                player_blackboard_entry_t *data, size_t len)
  {
        if (device->on_blackboard_event != NULL)
--- 141,146 ----
  }
  
! // Execute callback function
! void playerc_blackboard_putmsg(playerc_blackboard_t *device, player_msghdr_t 
*header, player_blackboard_entry_t *data, size_t len)
  {
        if (device->on_blackboard_event != NULL)


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to