Changeset 27 in Main


Ignore:
Timestamp:
28/11/2011 06:13:31 (3 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.