예제 #1
0
파일: dump.go 프로젝트: fedgrant/tonika
func (c *Core) MarshalJSON() ([]byte, os.Error) {
	var w bytes.Buffer
	fmt.Fprintf(&w, "{\"Build\":%s,\"Id\":%s,\"Lifetime\":%d,",
		misc.JSONQuote(c.GetBuild()), c.GetMyId().ToJSON(), time.Nanoseconds()-c.since)
	nj, err := c.FriendsMarshalJSON()
	if err != nil {
		return nil, err
	}
	dj, err := c.dialer.MarshalJSON()
	if err != nil {
		return nil, err
	}
	cj, err := c.compass.MarshalJSON()
	if err != nil {
		return nil, err
	}
	vj, err := c.vault.MarshalJSON()
	if err != nil {
		return nil, err
	}
	fj, err := c.fe.MarshalJSON()
	if err != nil {
		return nil, err
	}
	fmt.Fprintf(&w, "\"Friends\":%s,\"Dialer\":%s,\"Compass\":%s,\"Vault\":%s,\"FrontEnd\":%s}",
		nj, dj, cj, vj, fj)
	return w.Bytes(), nil
}
예제 #2
0
파일: fe.go 프로젝트: fedgrant/tonika
func (fe *FrontEnd) MarshalJSON() ([]byte, os.Error) {
	fe.lk.Lock()
	defer fe.lk.Unlock()
	var w bytes.Buffer
	fmt.Fprintf(&w, "{\"UserAgent\":%s,\"ServerFD\":%d,"+
		"\"ServerFDLim\":%d,\"WWWClientFD\":%d,\"WWWClientFDLim\":%d}",
		misc.JSONQuote(fe.useragent),
		fe.server.GetFDLimiter().LockCount(), fe.server.GetFDLimiter().Limit(),
		fe.wwwclient.GetFDLimiter().LockCount(), fe.wwwclient.GetFDLimiter().Limit())
	return w.Bytes(), nil
}
예제 #3
0
파일: conn.go 프로젝트: fedgrant/tonika
func (y *Conn) MarshalJSON() ([]byte, os.Error) {
	y.lk.Lock()
	defer y.lk.Unlock()

	var w bytes.Buffer
	if y.id != nil {
		if y.h != nil {
			fmt.Fprintf(&w, "{\"CTag\":%d,\"HTag\":%d,\"Session\":\"%x\","+
				"\"Id\":%s,\"Err\":%s,\"Regime\":%s}",
				y.tag, y.h.GetTag(), y.h.GetSession(),
				y.id.ToJSON(),
				misc.JSONQuote(errorToString(y.err)),
				misc.JSONQuote(regimeToString(y.regime)))
		} else {
			fmt.Fprintf(&w, "{\"CTag\":%d,\"Id\":%s,\"Err\":%s,\"Regime\":%s}",
				y.tag,
				y.id.ToJSON(),
				misc.JSONQuote(errorToString(y.err)),
				misc.JSONQuote(regimeToString(y.regime)))
		}
	} else {
		fmt.Fprintf(&w, "{\"CTag\":%d,\"Err\":%s,\"Regime\":%s}",
			y.tag,
			misc.JSONQuote(errorToString(y.err)),
			misc.JSONQuote(regimeToString(y.regime)))
	}
	return w.Bytes(), nil
}
예제 #4
0
파일: dump.go 프로젝트: fedgrant/tonika
func (d *Dialer0) MarshalJSON() ([]byte, os.Error) {
	d.lk.Lock()
	defer d.lk.Unlock()
	var w bytes.Buffer
	fmt.Fprintf(&w, "{\"FD\":%d,\"FDLim\":%d,\"Services\":[",
		d.fdlim.LockCount(), d.fdlim.Limit())
	comma := false
	for subj, _ := range d.listens {
		if comma {
			fmt.Fprintf(&w, ",")
		}
		fmt.Fprintf(&w, "%s", misc.JSONQuote(subj))
		comma = true
	}
	fmt.Fprintf(&w, "],\"Unauthd\":[")
	comma = false
	for c, _ := range d.unauthd {
		cj, err := c.MarshalJSON()
		if err != nil {
			return nil, err
		}
		if comma {
			fmt.Fprintf(&w, ",")
		}
		fmt.Fprintf(&w, "%s", cj)
		comma = true
	}
	fmt.Fprintf(&w, "],\"Telephones\":[")
	comma = false
	for _, t := range d.tels {
		tj, err := t.MarshalJSON()
		if err != nil {
			return nil, err
		}
		if comma {
			fmt.Fprintf(&w, ",")
		}
		fmt.Fprintf(&w, "%s", tj)
		comma = true
	}
	fmt.Fprintf(&w, "]}")
	return w.Bytes(), nil
}
예제 #5
0
파일: dump.go 프로젝트: fedgrant/tonika
func (c *Core) marshalProfJSON() string { return misc.JSONQuote(prof.String()) }
예제 #6
0
파일: sys.go 프로젝트: fedgrant/tonika
func (id Id) ToJSON() string { return misc.JSONQuote(id.Eye()) }