示例#1
0
文件: System.c 项目: authorNari/panda
static	ValueStruct	*
FETCH(
	DBG_Struct		*dbg,
	DBCOMM_CTRL		*ctrl,
	RecordStruct	*rec,
	ValueStruct		*args)
{
	ValueStruct *ret,*v;
	char vname[256];
ENTER_FUNC;
	ret = NULL;
	ctrl->rc = MCP_BAD_OTHER;
	if (rec->type != RECORD_DB || !hasData){
		ctrl->rc = MCP_BAD_ARG;
		return ret;
	}
	if (idx >= numData) {
		ctrl->rc = MCP_EOF;
		return ret;
	}
	if (sysdbvals == NULL) {
		ctrl->rc = MCP_EOF;
		return ret;
	}
	snprintf(vname,sizeof(vname),"values[%d]",idx);
	v = GetItemLongName(sysdbvals,vname); 
	if (v != NULL) {
		ret = DuplicateValue(v,TRUE); 
	}
	idx += 1;
	ctrl->rc = MCP_OK;
LEAVE_FUNC;
	return	ret;
}
示例#2
0
文件: System.c 项目: authorNari/panda
static	ValueStruct	*
GETDATA(
	DBG_Struct		*dbg,
	DBCOMM_CTRL		*ctrl,
	RecordStruct	*rec,
	ValueStruct		*args)
{
	ValueStruct *ret;
	PacketClass rc;
ENTER_FUNC;
	ret = NULL;
	ctrl->rc = MCP_BAD_OTHER;
	if		(  rec->type  !=  RECORD_DB  ) {
		ctrl->rc = MCP_BAD_ARG;
	} else {
		rc = SYSDB_GetData(NBCONN(dbg), args);
		if (rc == SESSION_CONTROL_OK) {
			ctrl->rc = MCP_OK;
			ret = DuplicateValue(args,TRUE);
		} else {
			ctrl->rc = MCP_BAD_OTHER;
		}
	}
LEAVE_FUNC;
	return	ret;
}
示例#3
0
文件: XMLIO.c 项目: montsuqi/panda
static ValueStruct *_OpenXML(DBG_Struct *dbg, DBCOMM_CTRL *ctrl,
                             RecordStruct *rec, ValueStruct *args) {
  int rc;
  ValueStruct *obj, *mode, *ret;
  char *buff;
  size_t size;
  xmlNodePtr root;
  DBG_Struct *mondbg;

  XMLpos = 0;
  XMLDoc = NULL;
  XMLmode = MODE_NONE;

  rc = MCP_BAD_OTHER;
  ret = NULL;

  if (rec->type != RECORD_DB) {
    rc = MCP_BAD_ARG;
  } else {
    if ((obj = GetItemLongName(args, "object")) != NULL &&
        (mode = GetItemLongName(args, "mode")) != NULL) {
      XMLmode = ValueInteger(mode);
      if (XMLmode == MODE_WRITE) {
        XMLDoc = xmlNewDoc("1.0");
        root = xmlNewDocNode(XMLDoc, NULL, "data", NULL);
        xmlDocSetRootElement(XMLDoc, root);
        ret = DuplicateValue(args, TRUE);
        rc = MCP_OK;
      } else {
        mondbg = GetDBG_monsys();
        if (blob_export_mem(mondbg, ValueObjectId(obj), &buff, &size)) {
          if (size > 0) {
            XMLDoc = xmlReadMemory(buff, size, "http://www.montsuqi.org/", NULL,
                                   XML_PARSE_NOBLANKS | XML_PARSE_NOENT);
            if (XMLDoc != NULL) {
              rc = MCP_OK;
            }
          }
          xfree(buff);
        }
      }
    } else {
      rc = MCP_BAD_ARG;
    }
  }
  if (ctrl != NULL) {
    ctrl->rc = rc;
  }
  return ret;
}
示例#4
0
文件: apslib.c 项目: montsuqi/panda
extern ValueStruct *MCP_GetDB_Define(char *name) {
  char buff[SIZE_LONGNAME + 1];
  int rno, pno, ono;
  RecordStruct *rec;
  PathStruct *path;
  DB_Operation *op;
  ValueStruct *val, *ret;
  char *p, *pname, *oname;

  strcpy(buff, name);
  if ((p = strchr(buff, ':')) != NULL) {
    *p = 0;
    pname = p + 1;
    if ((p = strchr(pname, ':')) != NULL) {
      *p = 0;
      oname = p + 1;
    } else {
      oname = NULL;
    }
  } else {
    oname = NULL;
    pname = NULL;
  }

  val = NULL;
  if ((rno = (int)(long)g_hash_table_lookup(DB_Table, name)) != 0) {
    rec = ThisDB[rno - 1];
    val = rec->value;
    if ((pname != NULL) && ((pno = (int)(long)g_hash_table_lookup(
                                 rec->opt.db->paths, pname)) != 0)) {
      path = rec->opt.db->path[pno - 1];
      val = (path->args != NULL) ? path->args : val;
      if ((oname != NULL) &&
          ((ono = (int)(long)g_hash_table_lookup(path->opHash, oname)) != 0)) {
        op = path->ops[ono - 1];
        val = (op->args != NULL) ? op->args : val;
      }
    }
  }
  if (val != NULL) {
    ret = DuplicateValue(val, FALSE);
  } else {
    ret = NULL;
  }
  return (ret);
}
示例#5
0
文件: XMLIO.c 项目: montsuqi/panda
static ValueStruct *_CloseXML(DBG_Struct *dbg, DBCOMM_CTRL *ctrl,
                              RecordStruct *rec, ValueStruct *args) {
  ValueStruct *obj, *ret;
  xmlChar *buff;
  int size;
  DBG_Struct *mondbg;

  buff = NULL;
  ret = NULL;
  if (rec->type != RECORD_DB) {
    ctrl->rc = MCP_BAD_ARG;
    return NULL;
  }
  if ((obj = GetItemLongName(args, "object")) == NULL) {
    ctrl->rc = MCP_BAD_ARG;
    return NULL;
  }
  if (XMLDoc == NULL) {
    ctrl->rc = MCP_BAD_OTHER;
    return NULL;
  }
  ctrl->rc = MCP_OK;
  if (XMLmode == MODE_WRITE) {
    xmlDocDumpFormatMemoryEnc(XMLDoc, &buff, &size, "UTF-8", 0);
    if (buff != NULL) {
      mondbg = GetDBG_monsys();
      ValueObjectId(obj) = blob_import_mem(mondbg, 0, "XMLIO.xml",
                                           "application/xml", 0, buff, size);
      if (ValueObjectId(obj) != GL_OBJ_NULL) {
        ret = DuplicateValue(args, TRUE);
        ctrl->rc = MCP_OK;
      } else {
        Warning("monblob_import_mem failure");
        ctrl->rc = MCP_BAD_OTHER;
      }
    }
    xfree(buff);
  }
  xmlFreeDoc(XMLDoc);
  XMLDoc = NULL;
  XMLpos = 0;
  XMLmode = MODE_NONE;
  return ret;
}
示例#6
0
文件: XMLIO.c 项目: montsuqi/panda
static ValueStruct *_ReadXML(DBG_Struct *dbg, DBCOMM_CTRL *ctrl,
                             RecordStruct *rec, ValueStruct *args) {
  xmlNodePtr node;
  xmlNodePtr root;
  ValueStruct *ret;
  int i;

  ret = NULL;
  ctrl->rc = MCP_BAD_OTHER;
  if (rec->type != RECORD_DB) {
    ctrl->rc = MCP_BAD_ARG;
    return NULL;
  }
  if (XMLDoc == NULL || XMLmode != MODE_READ) {
    return NULL;
  }
  root = xmlDocGetRootElement(XMLDoc);
  if (root == NULL || root->children == NULL) {
    return NULL;
  }
  for (node = root->children, i = 0; node != NULL; node = node->next, i++) {
    root = NULL;
    if (i == XMLpos) {
      root = node;
      break;
    }
  }
  XMLpos++;
  if (root == NULL) {
    return NULL;
  }
  ret = DuplicateValue(args, FALSE);
  ctrl->rc = XMLNode2Value(ret, root);
#ifdef TRACE
  DumpValueStruct(ret);
#endif
  return (ret);
}
示例#7
0
extern	int
main(
	int		argc,
	char	**argv)
{
#define	SIZE_DATA		128

	char	name[SIZE_DATA];
	unsigned char	*p;
	int		i;
	ValueStruct	*val
		,		*val2;
	unsigned char	*buff;
	char	method[SIZE_LONGNAME+1];
	FILE	*fp;

	RecordDir = ".";
	RecParserInit();
	val = BuildMcpArea(10);

	/*	set	*/
	printf("***** Value setting *****\n");
	SetValueString(GetItemLongName(val,"func"),"aaa",SRC_CODE);
	SetValueString(GetItemLongName(val,"rc"),"0",SRC_CODE);

	SetValueString(GetItemLongName(val,"dc.window"),"1 Ë",SRC_CODE);
	SetValueString(GetItemLongName(val,"dc.widget"),"widget",SRC_CODE);
	SetValueString(GetItemLongName(val,"dc.event"),"1002 ",SRC_CODE);
	SetValueString(GetItemLongName(val,"dc.fromwin"),"fromwin",SRC_CODE);
	SetValueString(GetItemLongName(val,"dc.status"),"status",SRC_CODE);
	SetValueString(GetItemLongName(val,"dc.puttype"),"puttype",SRC_CODE);
	SetValueString(GetItemLongName(val,"dc.term"),"term",SRC_CODE);
	SetValueString(GetItemLongName(val,"dc.user"),"user",SRC_CODE);

	for	( i = 0 ; i < N_PATH ; i ++ ) {
		sprintf(name,"db.path[%d].blocks",i);
		SetValueInteger(GetItemLongName(val,name),i);
		sprintf(name,"db.path[%d].rname",i);
		SetValueInteger(GetItemLongName(val,name),i);
		sprintf(name,"db.path[%d].pname",i);
		SetValueInteger(GetItemLongName(val,name),i);
		sprintf(name,"db.path[%d].name",i);
		SetValueString(GetItemLongName(val,name),name,SRC_CODE);
	}

	SetValueString(GetItemLongName(val,"private.count"),"1",SRC_CODE);
	for	( i = 0 ; i < 100 ; i ++ ) {
		sprintf(name,"private.swindow[%d]",i);
		SetValueString(GetItemLongName(val,name),name,SRC_CODE);
	}
	for	( i = 0 ; i < ValueArraySize(GetItemLongName(val,"private.state")) ; i ++ ) {
		sprintf(name,"private.state[%d]",i);
		SetValueString(GetItemLongName(val,name),name,SRC_CODE);
	}
	for	( i = 0 ; i < ValueArraySize(GetItemLongName(val,"private.index")) ; i ++ ) {
		sprintf(name,"private.index[%d]",i);
		SetValueString(GetItemLongName(val,name),name,SRC_CODE);
	}
	SetValueString(GetItemLongName(val,"private.pstatus"),"1",SRC_CODE);
	SetValueString(GetItemLongName(val,"private.pputtype"),"2",SRC_CODE);
	SetValueString(GetItemLongName(val,"private.prc"),"3",SRC_CODE);
	buff = xmalloc(SIZE_BUFF);
	memset(buff,0,SIZE_BUFF);
	for	( p = buff, i = 0 ; i < 256 ; i ++ , p ++) {
		*p = (unsigned char)i;
	}
	SetValueBinary(GetItemLongName(val,"bin"),buff,256);


	printf("***** SOAP ****\n");
	memset(buff,0,SIZE_BUFF);

	SOAP_PackValue(buff,val,"Put","mcp","http://oreore",TRUE,FALSE);

	printf("%s\n",buff);
	fp = fopen("test.SOAP","w");
	fprintf(fp,"%s\n",buff);
	fclose(fp);

	val2 = DuplicateValue(val,FALSE);

	SOAP_UnPackValue(val2,(char *)buff,method);

	printf("method = [%s]\n",method);
	DumpByXML(val2,"mcparea");

	SOAP_PackValue(buff,val,"Put","mcp","http://oreore",TRUE,FALSE);
	val2 = SOAP_LoadValue((char *)buff,method);
	printf("method = [%s]\n",method);
	DumpByXML(val2,"mcparea");
	//DumpValueStruct(val2);

	return	(0);
}