Changeset 27 in Main


Ignore:
Timestamp:
28/11/2011 06:13:31 (4 years ago)
Author:
duggan
Message:

Added test client. When server is running, client makes dummy request for context. Server returns dummy contextid.

Location:
src
Files:
9 added
6 edited

Legend:

Unmodified
Added
Removed
  • src/gfx_server/App.cpp

    r26 r27  
    2828        HeadList = new Head*[HeadCount];
    2929        headindex = 0;
     30        ContextNum = 0;
    3031}
    3132
     
    176177                {
    177178                        QuitRequested();
     179                        break;
    178180                }
    179                 case GFX_CREATE_CONTEXT:
     181                case D_CREATE_CONTEXT:
    180182                {
    181183                        cout<<"Context creation request received"<<endl;
     184                        // respond...
     185                        BMessage* m = new BMessage(D_REPLY);
     186                        m->AddInt32("contextid", (int32)ContextNum);
     187                        message->SendReply(m);
     188                        ContextNum++;
     189                        break;
    182190                }
    183191        }
  • src/gfx_server/App.h

    r25 r27  
    2424#define MAX_SLOTS 8
    2525
     26#define D_CREATE_CONTEXT        'dcct'
     27#define D_REPLY                         'drep'
     28
    2629class App : public BApplication {
    2730public:
     
    4144        Head**          HeadList;
    4245        thread_id       ConsoleID;
     46        uint32          ContextNum;
    4347};
    4448
  • src/test_lib/Drafter.h

    r8 r27  
    77
    88#include <SupportDefs.h>
    9 
     9#include <Messenger.h>
    1010
    1111// CONSTANTS /////////////////////////////
     
    1616#define D_ERR_NO_CONTEXT_AVAILABLE 0xFFFFFFFF
    1717#define D_ERR_BAD_CONTEXT_ID 1
     18
     19#define D_CREATE_CONTEXT        'dcct'
     20#define D_REPLY                         'drep'
    1821
    1922// FUNCTIONS /////////////////////////////
     
    2831
    2932// LOCAL VARIABLES ///////////////////////
    30 uint32 current_context;
    31 
     33uint32 current_context = 0xdeadbeef;
     34BMessenger* server_msgr = NULL;
    3235
    3336#endif // DRAFTER_H
  • src/test_lib/DrafterPrivateDefs.h

    r8 r27  
    1616#ifdef __HAIKU__
    1717
    18 static area_id context_area = B_ERROR; // invalid default
    19 static char* context_addr = NULL;
     18//static area_id context_area = B_ERROR; // invalid default
     19//static char* context_addr = NULL;
    2020
    2121#define CONTEXT_AREA_NAME "Drafter Context Area"
     
    4444};
    4545
    46 static ContextData* contexts;
    47 static uint32* contextCount;
     46//static ContextData* contexts;
     47//static uint32* contextCount;
    4848
    4949
  • src/test_lib/context.cpp

    r8 r27  
    99#include <iostream>
    1010
     11using namespace std;
     12
    1113// TODO: add parameters like width, height, team id, workspace, etc
    1214uint32
    1315CreateContext()
    1416{
    15 #ifdef __HAIKU__
    16         // set sizes etc
    17         uint32 size = sizeof(ContextData) * DRAFTER_MAX_CONTEXTS + sizeof(uint32);
    18         if (size > B_PAGE_SIZE)
     17        // get a messenger for the gfx_server
     18        status_t error;
     19        if (server_msgr == NULL)
    1920        {
    20                 //panic("Drafter context area size larger than page size\n");
    21 cout<<"Context area size larger than page size"<<endl;
    22                 return D_ERR_NO_CONTEXT_AVAILABLE;
    23         }
    24 
    25         // check if we already know about an existing area
    26         if (context_area == B_ERROR)
    27         {
    28                 char* temp_addr = NULL;
    29                 // check if an area already exists
    30                 area_id temp_area = find_area(CONTEXT_AREA_NAME);
    31                 // if not, create one, then clone it
    32                 if (temp_area == B_NAME_NOT_FOUND)
     21                server_msgr = new BMessenger("application/x-vnd.Drafter-gfx-server", -1, &error);
     22                if (error != B_OK)
    3323                {
    34                         // create a new area
    35                         temp_area = create_area(CONTEXT_AREA_NAME, &(void*)temp_addr, B_ANY_ADDRESS, B_PAGE_SIZE, B_CONTIGUOUS, B_READ_AREA | B_WRITE_AREA);
    36 cout<<"Creating Area: "<<temp_area<<endl;
    37                 }
    38                 // clone the area
    39                 context_area = clone_area(CONTEXT_AREA_CLONE_NAME, &(void*)context_addr, B_ANY_ADDRESS, B_READ_AREA | B_WRITE_AREA, temp_area);
    40                 // increment usage counter
    41                 if (context_area < B_OK)
    42                 {
    43 cout<<"Cannot clone area"<<endl;
    44                         return D_ERR_NO_CONTEXT_AVAILABLE;
    45                 }
    46                 contexts = (ContextData*)context_addr;
    47                 contextCount = (uint32*)context_addr + sizeof(ContextData) * DRAFTER_MAX_CONTEXTS;
    48                 *contextCount++;
    49         }
    50 #endif
    51         // TODO: add locking
    52         bool foundcontext = false;
    53         int a;
    54         for (a = 0; a < DRAFTER_MAX_CONTEXTS; a++)
    55         {
    56                 if ((contexts[a].flags & DRAFTER_CONTEXT_USED) == 0)
    57                 {
    58                         // use this context!
    59                         contexts[a].flags |= DRAFTER_CONTEXT_USED;
    60                         foundcontext = true;
    61                         break;
     24                        return 0xdeadbeef;
    6225                }
    6326        }
    64         if (foundcontext == false)
    65         {
    66                 a = D_ERR_NO_CONTEXT_AVAILABLE;
    67         }
    68         return a;
     27        // TODO: send a request for a new context
     28        BMessage request(D_CREATE_CONTEXT);
     29        BMessage reply;
     30        //BMessage* reply = new BMessage(D_REPLY);
     31        server_msgr->SendMessage(&request, &reply);
     32
     33        // TODO: retrieve the resuls
     34        uint32 contextnum;
     35        reply.FindInt32("contextid", 0, &((int32)contextnum));
     36        cout<<"Context returned: "<< contextnum << endl;
     37        return contextnum;
    6938}
    7039
     
    7241SwitchContext(uint32 context)
    7342{
     43        /*
    7444        if (context < DRAFTER_MAX_CONTEXTS)
    7545        {
     
    8151        }
    8252        return D_ERR_BAD_CONTEXT_ID;
     53        */
     54        return 0;
    8355}
    8456
     
    8860// TODO: add locking
    8961// TODO: check the teamID too
    90         if (context < DRAFTER_MAX_CONTEXTS)
     62/*      if (context < DRAFTER_MAX_CONTEXTS)
    9163        {
    9264                if (contexts[context].flags & DRAFTER_CONTEXT_USED)
     
    9769        }
    9870        return D_ERR_BAD_CONTEXT_ID;
     71        */
     72        return 0;
    9973}
  • src/test_lib/lib3DStack.pld

    r8 r27  
    77SOURCEFILE=context.cpp
    88DEPENDENCY=/boot/home/Desktop/My Sources/lib3DStack/Drafter.h|/boot/home/Desktop/My Sources/lib3DStack/DrafterPrivateDefs.h
    9 LOCALINCLUDE=
    109SYSTEMINCLUDE=/boot/develop/headers/be
    1110SYSTEMINCLUDE=/boot/develop/headers/cpp
Note: See TracChangeset for help on using the changeset viewer.