SESSION API

1. wbGetSession

wbGetSession은 요청하는 사용자에게 현재 세션을 반환한다.

만약 세션이 없다면 새로운 세션을 만들어 반환한다. 세션이 올바르게 관리 되고 있다는 것을 확신하기 위해, 어떤 결과가 응답으로 가기전에 적어도 한번 이상 호출되어야 한다.

  • 프로토타입

    #include <wbapi.h>
    SESSION* wbGetSession(WBSVCINFO *rqst)
  • 반환값

    wbGetSession() 호출에 성공한 경우 유효한 세션(SESSION)을 반환한다.

  • 예제

    <getsession.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR = "/user2/haninho/webtob/ap",
                    PORT = "7654"
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SvrType = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc = 2
     getsession     SVGNAME = webapg, MinProc = 1, MaxProc = 2
    
    *SERVICE
     test           SVrname= getsession
    
    *URI
     uri1           uri = "/svct/", SvrType = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일 (Config-file)을 컴파일한다.

      $wscfl –i getsession.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 getsession.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst)
       {
              char *id;
              SESSION *session;
              session = wbGetSession(rqst);
              id = wbSessionGetId(session);
              wbPrint(rqst,”session id= %s”, id);
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c getsession
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbGetSessionId(), wbSessionGetValue(),wbSessionGetLastAccessedTime(), wbSessionGetMaxInactiveInterval(), wbSessionGetCreationTime(), wbSessionGetValueNames()

2. wbSessionGetCreationTime

wbSessionGetCreationTime은 현재 세션이 만들어진 시간을 반환한다.

1970 GMT, 1월 1일 자정 이후의 시간을 밀리세컨드 단위로 표시하는 long 타입으로 세션이 만들어진 시간을 반환한다.

  • 프로토타입

    #include <wbapi.h>
    long wbSessionGetCreationTime(SESSION *session)
  • 반환값

    wbSessionGetCreationTime() 호출에 성공한 경우 세션이 만들어진 시간을 반환한다.

  • 예제

    <createtime.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR = "/user2/haninho/webtob/ap",
                    PORT = "7654"
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SvrType = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc = 2
     createtime     SVGNAME = webapg, MinProc = 1, MaxProc = 2
    
    *SERVICE
     test           SVrname= createtime
    
    *URI
     uri1           uri = "/svct/", SvrType = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일 (Config-file)을 컴파일한다.

      $wscfl –i createtime.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 createtime.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/atmi.h"
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst) {
              long time;
              SESSION *session;
              session = wbGetSession(rqst);
              time = wbSessionGetCreationTime(session);
              wbPrint(rqst, "create time = %ld<br>", time);
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c createtime
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbGetSession(), wbGetSessionId(), wbSessionGetLastAccessedTime(), wbSessionGetMaxInactiveInterval(), wbSessionGetValue(), wbSessionGetValueNames()

3. wbSessionGetId

wbSessionGetId는 현재 세션에 할당된 문자열 식별자(ID)를 반환한다.

  • 프로토타입

    #include <wbapi.h>
    char* wbSessionGetId(SESSION *session)
  • 반환값

    wbSessionGetId() 호출에 성공한 경우에는 세션에 할당된 문자열을 반환한다.

  • 예제

    <getid.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR = "/user2/haninho/webtob/ap",
                    PORT = "7654"
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SvrType = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc = 2
     getid          SVGNAME = webapg, MinProc = 1, MaxProc = 2
    
    *SERVICE
     test           SVrname= getid
    
    *URI
     uri1           uri = "/svct/", SvrType = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경화일(Config-file)을 컴파일한다.

      $wscfl –i getid.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 getid.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst) {
              int ex;
              char *id;
              SESSION *session;
              session = wbGetSession(rqst);
              ex = wbSessionIsNew(session);
              id = wbSessionGetId(session);
              wbPrint(rqst, "session id = %s<br>", id);
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c getid
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbSessionGetCreationTime(), wbGetSession(), wbSessionGetLastAccessedTime(), wbSessionGetMaxInactiveInterval(), wbSessionGetValue(), wbSessionGetValueNames()

4. wbSessionGetLastAccessedTime

wbSessionGetLastAccessedTime은 클라이언트가 마지막으로 요청을 보내는 시간을 반환한다.

1970 GMT, 1월 1일 자정 이후의 시간을 밀리세컨드 단위로 표시하는 long 타입으로 이 세션과 관련하여 클라이언트가 마지막으로 요청을 보낸 시간을 반환한다.

  • 프로토타입

    #include <wbapi.h>
    long wbSessionGetLastAccessedTime(SESSION *session)
  • 반환값

    wbSessionGetlastAccessedTime() 호출에 성공한 경우에는 클라이언트가 마지막으로 요청을 보낸 시간을 반환한다.

  • 예제

    <lasttime.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR = "/user2/haninho/webtob/ap",
                    PORT = "7654"
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SvrType = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc = 2
     lasttime       SVGNAME = webapg, MinProc = 1, MaxProc = 2
    
    *SERVICE
     test           SVrname= lasttime
    
    *URI
     uri1           uri = "/svct/", SvrType = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i lasttime.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 lasttime.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst) {
              long last;
              SESSION *session;
              session = wbGetSession(rqst);
              last = wbSessionGetLastAccessedTime(session);
              wbPrint(rqst, "session last access time = %ld<br>", last);
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c lasttime
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbSessionGetCreationTime(), wbGetSessionId(), wbGetSession(), wbSessionGetMaxInactiveInterval(), wbSessionGetValue(), wbSessionGetValueNames()

5. wbSessionGetValue

wbSessionGetValue는 지정한 이름의 값을 세션에서 찾아 반환한다.

  • 프로토타입

    #include <wbapi.h>
    int wbSessionGetValue(SESSION *session, char *name, int *len)
  • 반환값

    지정한 이름의 값을 세션에서 찾아 반환한다. 만약 찾으려는 값의 이름이 없다면 NULL을 반환한다.

  • 예제

    <getvalue.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR = "/user2/haninho/webtob/ap",
                    PORT = "7654"
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SvrType = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc = 2
     getvalue       SVGNAME = webapg, MinProc = 1, MaxProc = 2
    
    *SERVICE
     test            SVrname= getvalue
    
    *URI
     uri1            uri = "/svct/", SvrType = WEBSTD
    
    *EXT
     htm             MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i getvalue.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 getvalue.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
       test(WBSVCINFO *rqst){
              int len;
              char *value, *value2;
              SESSION *session;
              SESSION *session1;
       SESSION *session2;
              session= wbGetSession(rqst);
              session1 = wbSessionSetValue(session, "name", "webtob",6);
       session2 = wbSessionSetValue(session1, "tel", "123-1234",8);
              value = wbSessionGetValue(session2 , "name",&len);
       value2 = wbSessionGetValue(session2 , "tel",&len);
       wbPrint(rqst, "session value = %s<br>", value);
              wbPrint(rqst, "session value = %s", value2);
              wbReturn(rqst, WBSUCCESS);
      }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c getvalue
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbSessionGetCreationTime(), wbGetSessionId(), wbSessionGetLastAccessedTime(), wbSessionGetMaxInactiveInterval(), wbGetSession(), wbSessionGetValueNames()

6. wbSessionGetValueNames

wbSessionGetValueNames는 현재 세션에 포함된 모든 값의 이름을 포함하는 배열을 반환한다.

  • 프로토타입

    #include <wbapi.h>
    char** wbSessionGetValueNames(SESSION *session, int *len)
  • 반환값

    세션에서 모든 값의 이름을 찾아서 반환한다. 만약 어떠한 값도 없다면 NULL을 반환한다.

  • 예제

    <valuename.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR = "/user2/haninho/webtob/ap",
                    PORT = "7654"
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SvrType = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc = 2
     valuename      SVGNAME = webapg, MinProc = 1, MaxProc = 2
    
    *SERVICE
     test           SVrname= valuename
    
    *URI
     uri1           uri = "/svct/", SvrType = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i valuename.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 valuename.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst) {
              char **na;
              int len;
              SESSION *session;
              SESSION *session1;
              SESSION *session2;
              session= wbGetSession(rqst);
              session1 = wbSessionSetValue(session, "name", "webtob",6);
              session2 = wbSessionSetValue(session1, "tel", "123-1234",8);
              na = wbSessionGetValueNames(session2,&len);
              wbPrint(rqst,"name1 = %s\n<br>",*na);
              wbPrint(rqst,"name2 = %s\n",*(na+1));
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c valuename
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbSessionGetCreationTime(), wbGetSessionId(), wbSessionGetLastAccessedTime(), wbSessionGetMaxInactiveInterval(), wbSessionGetValue(), wbGetSession()

7. wbSessionGetMaxInactiveInterval

wbSessionGetMaxInactiveInterval은 세션에 정해진 최대 inactive interval 시간을 초 단위로 얻는다. 기본값은 1800초로 30분이다.

  • 프로토타입

    #include <wbapi.h>
    int wbSessionGetMaxInactiveInterval(SESSION *session)
  • 반환값

    wbSessionGetMaxInactiveInterval() 호출에 성공한 경우 세션에 정해진 inactive interval 시간을 초 단위로 반환한다.

  • 예제

    <getinterval.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR = "/user2/haninho/webtob/ap",
                    PORT = "7654"
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SvrType = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc = 2
     getinterval    SVGNAME = webapg, MinProc = 1, MaxProc = 2
    
    *SERVICE
     test           SVrname= getinterval
    
    *URI
     uri1           uri = "/svct/", SvrType = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i getinterval.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 getinterval.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst) {
              int ex=0, interval, check;
              SESSION *session;
              session = wbGetSession(rqst);
              ex = wbSessionIsNew(session);
              interval = wbSessionGetMaxInactiveInterval(session);
              if(ex == 1)         {
                wbPrint(rqst, "session inactive Interval = %d<br>", interval);
              } else {
                      wbPrint(rqst," fail create session");
              }
              check = wbSessionSetMaxInactiveInterval(session, 3000);
              interval = wbSessionGetMaxInactiveInterval(session);
              wbPrint(rqst, "session new inactive Interval = %d<br>", interval);
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c getinterval
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbSessionGetCreationTime(), wbGetSessionId(), wbSessionGetLastAccessedTime(), wbGetSession (), wbSessionGetValue(), wbSessionGetValueNames()

8. wbSessionSetMaxInactiveInterval

wbSessionSetMaxInactiveInterval은 세션에 정해진 최대 inactive interval 시간을 초 단위로 다시 설정한다. 기본값은 1800초로 30분이다.

  • 프로토타입

    #include <wbapi.h>
    int wbSessionSetMaxInactiveInterval(SESSION *session, int interval)
  • 반환값

    wbSessionSetMaxInactiveInterval() 호출에 성공한 경우는 1을 반환하고 실패할 경우에는 0을 반환한다.

  • 예제

    <setinterval.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR = "/user2/haninho/webtob/ap",
                    PORT = "7654"
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SvrType = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc = 2
     setinterval    SVGNAME = webapg, MinProc = 1, MaxProc = 2
    
    *SERVICE
     test           SVrname= setinterval
    
    *URI
     uri1           uri = "/svct/", SvrType = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i setinterval.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 setinterval.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst) {
              int ex=0, interval, check;
              SESSION *session;
              session = wbGetSession(rqst);
              ex = wbSessionIsNew(session);
              interval = wbSessionGetMaxInactiveInterval(session);
              if(ex == 1)         {
                wbPrint(rqst, "session inactive Interval = %d<br>", interval);
              } else {
                      wbPrint(rqst," fail create session");
              }
              check = wbSessionSetMaxInactiveInterval(session, 3000);
              interval = wbSessionGetMaxInactiveInterval(session);
              wbPrint(rqst, "session new inactive Interval = %d<br>", interval);
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c setinterval
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbSessionSetValue()

9. wbSessionSetValue

wbSessionSetValue는 지정한 이름의 값을 세션에 저장한다. 만약 저장하려는 값의 이름이 있다면 교체된다.

  • 프로토타입

    #include <wbapi.h>
    SESSION* wbSessionSetValue(SESSION *session, char *name, int len)
  • 반환값

    지정한 이름의 값이 저장된 세션이 반환된다.

  • 예제

    <setvalue.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR = "/user2/haninho/webtob/ap",
                    PORT = "7654"
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SvrType = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc = 2
     setvalue       SVGNAME = webapg, MinProc = 1, MaxProc = 2
    
    *SERVICE
     test           SVrname= setvalue
    
    *URI
     uri1           uri = "/svct/", SvrType = WEBSTD 
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i setvalue.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 setvalue.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst) {
              int len;
              char *value, *value2;
              SESSION *session;
              SESSION *session1;
              SESSION *session2;
              session= wbGetSession(rqst);
              session1 = wbSessionSetValue(session, "name", "webtob",6);
              session2 = wbSessionSetValue(session1, "tel", "123-1234",8);
              value = wbSessionGetValue(session2 , "name",&len);
              value2 = wbSessionGetValue(session2 , "tel",&len);
              wbPrint(rqst, "session value = %s<br>", value);
              wbPrint(rqst, "session value = %s", value2);
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c setvalue
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbSessionSetMaxInactiveInterval()

10. wbSessionRemoveValue

wbSessionRemoveValue는 세션에 저장된 값을 제거한다. 만약 인자 name으로 저장된 값이 없다면 아무일도 하지 않는다.

  • 프로토타입

    #include <wbapi.h>
    int wbSessionRemoveValue(SESSION *session, char *name)
  • 반환값

    wbSessionRemoveValue() 호출에 성공한 경우는 1을 실패한 경우에는 0을 반환한다.

  • 예제

    <remove.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     remove         SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = remove
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i remove.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 remove.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst)
       {
              int ex, len;
              char *value, *value2;
              SESSION *session;
              SESSION *newsession;
              session = wbGetSession(rqst);
              newsession = wbSessionSetValue(session, "name", "webtob",7);
              value = wbSessionGetValue(newsession , "name",&len);
              wbPrint(rqst, "session value = %s<br>", value);
              ex = wbSessionRemoveValue(newsession, "name");
              if(ex ==1)
              {
                      wbPrint(rqst, "delete value<br>");
              }
              value2 = wbSessionGetValue(newsession , "name", &len);
              if(value2 !=NULL)
              {
              wbPrint(rqst, "session value = %s<br>", value2);
              }
              else
              {
              wbPrint(rqst, "session value is null<br>");
              }
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c remove
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbSessionGetValue(), wbSessionSetValue()

11. wbSessionIsNew

wbSessionIsNew는 세션이 새로운 것인지 아닌지 나타내는 값을 반환한다. 서버가 세션을 만들었으나, 클라이언트가 합쳐질 세션을 승인하지 않았다면 이 세션은 새로운 것이다.

  • 프로토타입

    #include <wbapi.h>
    int wbSessionIsNew(SESSION *session)
  • 반환값

    wbSessionIsNew() 호출 후 세션이 새로운 것이라면 1을 클라이언트가 이미 세션을 승인하였다면 0을 반환한다.

  • 예제

    <isnew.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     isnew          SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = isnew
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i isnew.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 isnew.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst) {
              int ex=0;
              SESSION *session;
              session = wbGetSession(rqst);
              ex = wbSessionIsNew(session);
              if(ex == 1)         {
                      wbPrint(rqst, "new session");
              } else {
                      wbPrint(rqst," old session");
              }
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c isnew
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbIsRequestedSessionIdValid(), wbSessionInvalidate()

12. wbSessionInvalidate

wbSessionInvalidate는 세션을 무효화시킨다.

  • 프로토타입

    #include <wbapi.h>
    int wbSessionInvalidate(SESSION *session)
  • 반환값

    wbSessionInvalidate() 호출에 성공한 경우는 1을 실패한 경우에는 0을 반환한다.

  • 예제

    <invalidate.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     invalidate     SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = invalidate
     test2          SVRNAME = invalidate
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i invalidate.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 invalidate.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
       test(WBSVCINFO *rqst)
       {
              char *id;
              SESSION *session;
              session = wbGetSession(rqst);
              id = wbSessionGetId(session);
              wbPrint(rqst, "<html><body>");
              wbPrint(rqst, "<h1>session id is %s </h1><br>",id);
              wbPrint(rqst, "<form method=get action=/svct/test2>");
              wbPrint(rqst, "<td><input type=submit value=suit></td>");
              wbPrint(rqst, "</form>");
              wbPrint(rqst, "</body></html>");
              wbReturn(rqst, WBSUCCESS);
       }
       test2(WBSVCINFO *rqst)
       {
              int date;
              char *id;
              SESSION *session;
              session= wbGetSession(rqst);
              date = wbSessionInvalidate(session);
              id = wbSessionGetId(session);
       if(id !=NULL)
              {
              wbPrint(rqst, "<h1>session id is %s </h1><br>",id);
              }
              else
              {
              wbPrint(rqst, "<hi>Session id is Null</h1>");
              }
       if(date == 1)
              {
              wbPrint(rqst, "session  is invalidate=%d<br>",date);
              }
              else
              {
              wbPrint(rqst, "session  is validate=%d<br>",date);
              }
       wbPrint(rqst, "<html><body>");
              wbPrint(rqst, "<form method=get action=/svct/test2>");
              wbPrint(rqst, "<td><input type=submit value=suit></td>");
              wbPrint(rqst, "</form>");
              wbPrint(rqst, "</body></html>");
              wbReturn(rqst, WBSUCCESS);}
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c invalidate
    5. 다음은 결과가 출력된 화면이다.

      [suit] 버튼을 클릭한다.

      image

      다시 [suit] 버튼을 클릭한다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbIsRequestedSessionIdValid(), wbSessionIsNew()

13. wbGetRequestedSessionId

wbGetRequestedSessionId는 사용자에 의해 명확해진 세션 ID를 반환한다.

이것은 실제의 세션 ID가 아닐 수도 있다. 가령, 요청이 일어나기 전에 세션이 끝났으면, 서버는 새로운 세션 ID를 만들고 대신에 새로 만든 것을 사용하기 때문이다.

  • 프로토타입

    #include <wbapi.h>
    char* wbGetRequestedSessionId(WBSVCINFO *rqst)
  • 반환값

    wbGetRequestedSessionId() 호출에 성공한 경우에는 세션 ID를 반환한다.

  • 예제

    <sessionid.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     sessionid      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = sessionid
     test2          SVRNAME = sessionid
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i sessionid.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 sessionid.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst)
       {
              char *id;
              SESSION *session;
              session = wbGetSession(rqst);
              id = wbSessionGetId(session);
              wbPrint(rqst, "<html><body>");
              wbPrint(rqst, "<h1>session id is %s </h1><br>",id);
      
              wbPrint(rqst, "<html><body>");
              wbPrint(rqst, "<form method=get action=/svct/test2>");
              wbPrint(rqst, "<td><input type=submit value=suit></td>");
              wbPrint(rqst, "</form>");
              wbPrint(rqst, "</body></html>");
              wbReturn(rqst, WBSUCCESS);
       }
       test2(WBSVCINFO *rqst)
       {
              char *sessionid;
              sessionid = wbGetRequestedSessionId(rqst);
              if(sessionid != NULL)
              {
              wbPrint(rqst, "sessionId  is = %s<br>",sessionid);
              }
              else
              {
              wbPrint(rqst, "sessionId  is NULL<br>");
              }
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c sessionid
    5. 다음은 결과가 출력된 화면이다.

      [suit] 버튼을 클릭한다.

      image

      다시 [suit] 버튼을 클릭한다.

      image

  • 관련 함수

    wbSessionIsNew(), wbIsRequestedSessionIdValid(), wbSessionInvalidate()

14. wbIsRequestedSessionIdValid

wbIsRequestedSessionIdValid는 클라이언트에 의해 요청된 세션이 올바른 세션인지 확인한다.

클라이언트에 의해 요청된 세션이 올바른 세션이고, 따라서 현재 사용 중이라면 1을 리턴한다. 하지만 새로 만들어진 세션과 사용기간이 끝난 세션에 대해서는 0을 리턴한다.

  • 프로토타입

    #include <wbapi.h>
    int wbIsRequestedSessionIdValid(WBSVCINFO *rqst)
  • 반환값

    wbIsRequestedSessionIdVaild() 호출하는 경우 세션이 사용 중이면 1을, 사용이 끝났을 경우에는 0을 반환한다.

  • 예제

    <idvalid.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     idvalid        SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = idvalid
     test2          SVRNAME = idvalid
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i idvalid.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 sessionid.c이다.

       #include <stdio.h>
       #include <string.h>
       #include "../usrinc/wbapi.h"
      
       test(WBSVCINFO *rqst) {
              char *id;
              SESSION *session;
              session = wbGetSession(rqst);
              id = wbSessionGetId(session);
              wbPrint(rqst, "<html><body>");
              wbPrint(rqst, "<h1>session id is %s </h1><br>",id);
      
              wbPrint(rqst, "<html><body>");
              wbPrint(rqst, "<form method=get action=/svct/test2>");
              wbPrint(rqst, "<td><input type=submit value=suit></td>");
              wbPrint(rqst, "</form>");
              wbPrint(rqst, "</body></html>");
              wbReturn(rqst, WBSUCCESS);
       }
       test2(WBSVCINFO *rqst) {
       int date;
              date = wbIsRequestedSessionIdValid(rqst);
              if(date == 1)
              {
              wbPrint(rqst, "session  is used=%d<br>",date);
              }
              else
              {
              wbPrint(rqst, "session  is not used=%d<br>",date);
              }
              wbPrint(rqst, "<html><body>");
              wbPrint(rqst, "<form method=get action=/svct/test2>");
              wbPrint(rqst, "<td><input type=submit value=suit></td>");
              wbPrint(rqst, "</form>");
              wbPrint(rqst, "</body></html>");
              wbReturn(rqst, WBSUCCESS);
      }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c sessionid
    5. 다음은 결과가 출력된 화면이다.

      [suit] 버튼을 클릭한다.

      image

      다시 [suit] 버튼을 클릭한다.

      image

  • 관련 함수

    wbGetRequestedSessionId(), wbSessionIsNew(), wbSessionInvalidate()