Skip to content
Snippets Groups Projects
nameserver.c 1.62 KiB
Newer Older
antnh6@gmail.com's avatar
antnh6@gmail.com committed
#include <nameserver.h>
#include <tools.h>

antnh6@gmail.com's avatar
antnh6@gmail.com committed
void NameServer(){
  int TIDSeq[HASH_SIZE];
  char Names[HASH_SIZE][NAME_LENGTH_MAX+1];

  // initialize Names
  int i = 0;
  for(;i<257;i++){
    Names[i][NAME_LENGTH_MAX] = 0;
  }
  
  HT HashTable;
  HashTable.TidSequence = TIDSeq;
  HashTable.NameSequence = Names;
  HashTable.size = HASH_SIZE;

  Buffer SendQ;
  int storage[MAX_NUM_BUFFER];
  SendQ.Storage = (void *)(storage);
  SendQ.size = MAX_NUM_BUFFER;
  SendQ.Head = 0;
  SendQ.Tail = 0;
  SendQ.Length = 0;

  // some sort of while loop to receive and reply
  
}

int ActualWhoIS(AP* Args){
  asm volatile ("swi 9\n\t");
  register int r0 asm ("r0");
  int R = r0;
  return R;
}

int WhoIs(char* Name) {
    NSReqMsg SendMsg, ReplyMsg; 
    int Status;
    AP Args;
    SendMsg.MsgType = WhoIs; 
    stringCopy(SendMsg.Msg, Name, NS_MESSAGE_MAX_LENGTH);
    
    Args.arg0 = SendMsg;
    Args.arg1 = sizeof(NSMsg);
    Args.arg2 = ReplyMsg;
    Args.arg3 = sizeof(NSMsg);

    Status = ActualWhoIS(&Args)
antnh6@gmail.com's avatar
antnh6@gmail.com committed
    if (Status == sizeof(NSMsg)) return ReplyMsg.TaskID; 
    else return NAMESERVER_TID_INVALID;
}
int ActualRegAS(AP* Args){
  asm volatile ("swi 10\n\t");
  register int r0 asm ("r0");
  int R = r0;
  return R;
}
antnh6@gmail.com's avatar
antnh6@gmail.com committed

int RegisterAs (char* Name) {
    NSReqMsg SendMsg, ReplyMsg; 
    int Status;
    AP Args;

    SendMsg.MsgType = RegisterAs; 
    stringCopy(SendMsg.Msg, Name, NS_MESSAGE_MAX_LENGTH);
    
    Args.arg0 = SendMsg;
    Args.arg1 = sizeof(NSMsg);
    Args.arg2 = ReplyMsg;
    Args.arg3 = sizeof(NSMsg);

    Status = ActualRegAS(&Args);

    if (Status == sizeof(NSMsg)) return SUCCESS;
    else return NAMESERVER_TID_INVALID;