本文整理汇总了Golang中github.com/gonet2/libs/nsq-logger.Critical函数的典型用法代码示例。如果您正苦于以下问题:Golang Critical函数的具体用法?Golang Critical怎么用?Golang Critical使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Critical函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: init
func (ns *numbers) init(path string) {
ns.tables = make(map[string]*table)
client := etcdclient.GetClient()
defer func() {
client.Close()
}()
resp, err := client.Get(path, false, false)
if err != nil {
log.Critical(err)
return
}
// 解码xlsx
xlsx_bin, err := base64.StdEncoding.DecodeString(resp.Node.Value)
if err != nil {
log.Critical(err)
return
}
// 读取xlsx
xlsx_reader, err := xlsx.OpenBinary(xlsx_bin)
if err != nil {
log.Critical(err)
return
}
ns.parse(xlsx_reader.Sheets)
}
开发者ID:tonycoming,项目名称:game,代码行数:28,代码来源:numbers.go
示例2: init_machine_id
func (s *server) init_machine_id() {
client := <-s.client_pool
defer func() { s.client_pool <- client }()
for {
// get the key
resp, err := client.Get(context.Background(), UUID_KEY, nil)
if err != nil {
log.Critical(err)
os.Exit(-1)
}
// get prevValue & prevIndex
prevValue, err := strconv.Atoi(resp.Node.Value)
if err != nil {
log.Critical(err)
os.Exit(-1)
}
prevIndex := resp.Node.ModifiedIndex
// CompareAndSwap
resp, err = client.Set(context.Background(), UUID_KEY, fmt.Sprint(prevValue+1), &etcd.SetOptions{PrevIndex: prevIndex})
if err != nil {
cas_delay()
continue
}
// record serial number of this service, already shifted
s.machine_id = (uint64(prevValue+1) & MACHINE_ID_MASK) << 12
return
}
}
开发者ID:en,项目名称:snowflake,代码行数:32,代码来源:service.go
示例3: P_get_seed_req
// 密钥交换
func P_get_seed_req(sess *Session, reader *packet.Packet) []byte {
tbl, _ := PKT_seed_info(reader)
// KEY1
X1, E1 := dh.DHExchange()
KEY1 := dh.DHKey(X1, big.NewInt(int64(tbl.F_client_send_seed)))
// KEY2
X2, E2 := dh.DHExchange()
KEY2 := dh.DHKey(X2, big.NewInt(int64(tbl.F_client_receive_seed)))
ret := seed_info{int32(E1.Int64()), int32(E2.Int64())}
// 服务器加密种子是客户端解密种子
encoder, err := rc4.NewCipher([]byte(fmt.Sprintf("%v%v", SALT, KEY2)))
if err != nil {
log.Critical(err)
return nil
}
decoder, err := rc4.NewCipher([]byte(fmt.Sprintf("%v%v", SALT, KEY1)))
if err != nil {
log.Critical(err)
return nil
}
sess.Encoder = encoder
sess.Decoder = decoder
sess.Flag |= SESS_KEYEXCG
return packet.Pack(Code["get_seed_ack"], ret, nil)
}
开发者ID:anders007,项目名称:agent,代码行数:28,代码来源:handle.go
示例4: SaveFile
//---------------------------------------------------------- 产生GridFS文件
func SaveFile(filename string, buf []byte) bool {
ms := _global_ms.Copy()
defer ms.Close()
gridfs := ms.DB("").GridFS("fs")
// 首先删除同名文件
err := gridfs.Remove(filename)
if err != nil {
log.Critical("gridfs", filename, err)
return false
}
// 产生新文件
file, err := gridfs.Create(filename)
if err != nil {
log.Critical("gridfs", filename, err)
return false
}
n, err := file.Write(buf)
if err != nil {
log.Critical("gridfs", filename, n, err)
return false
}
err = file.Close()
if err != nil {
log.Critical("gridfs", filename, err)
return false
}
log.Info("gridfs", filename, "saved to GridFS!!")
return true
}
开发者ID:tonycoming,项目名称:libs,代码行数:35,代码来源:mongo.go
示例5: init
func (arch *Archiver) init() {
arch.pending = make(chan []byte)
arch.stop = make(chan bool)
cfg := nsq.NewConfig()
consumer, err := nsq.NewConsumer(TOPIC, CHANNEL, cfg)
if err != nil {
log.Critical(err)
os.Exit(-1)
}
// message process
consumer.AddHandler(nsq.HandlerFunc(func(msg *nsq.Message) error {
arch.pending <- msg.Body
return nil
}))
// read environtment variable
addresses := []string{DEFAULT_NSQLOOKUPD}
if env := os.Getenv(ENV_NSQLOOKUPD); env != "" {
addresses = strings.Split(env, ";")
}
// connect to nsqlookupd
log.Trace("connect to nsqlookupds ip:", addresses)
if err := consumer.ConnectToNSQLookupds(addresses); err != nil {
log.Critical(err)
return
}
log.Info("nsqlookupd connected")
go arch.archive_task()
}
开发者ID:tonycoming,项目名称:arch,代码行数:32,代码来源:arch.go
示例6: Next
// get next value of a key, like auto-increment in mysql
func (s *server) Next(ctx context.Context, in *pb.Snowflake_Key) (*pb.Snowflake_Value, error) {
client := <-s.client_pool
defer func() { s.client_pool <- client }()
key := PATH + in.Name
for {
// get the key
resp, err := client.Get(context.Background(), key, nil)
if err != nil {
log.Critical(err)
return nil, errors.New("Key not exists, need to create first")
}
// get prevValue & prevIndex
prevValue, err := strconv.Atoi(resp.Node.Value)
if err != nil {
log.Critical(err)
return nil, errors.New("marlformed value")
}
prevIndex := resp.Node.ModifiedIndex
// CompareAndSwap
resp, err = client.Set(context.Background(), key, fmt.Sprint(prevValue+1), &etcd.SetOptions{PrevIndex: prevIndex})
if err != nil {
cas_delay()
continue
}
return &pb.Snowflake_Value{int64(prevValue + 1)}, nil
}
}
开发者ID:en,项目名称:snowflake,代码行数:30,代码来源:service.go
示例7: Next
// get next value of a key, like auto-increment in mysql
func (s *server) Next(ctx context.Context, in *pb.Snowflake_Key) (*pb.Snowflake_Value, error) {
client := s.client_pool.Get().(*etcd.Client)
defer func() {
s.client_pool.Put(client)
}()
key := PATH + in.Name
for i := 0; i < RETRY_MAX; i++ {
// get the key
resp, err := client.Get(key, false, false)
if err != nil {
log.Critical(err)
return nil, errors.New("Key not exists, need to create first")
}
// get prevValue & prevIndex
prevValue, err := strconv.Atoi(resp.Node.Value)
if err != nil {
log.Critical(err)
return nil, errors.New("marlformed value")
}
prevIndex := resp.Node.ModifiedIndex
// CAS
resp, err = client.CompareAndSwap(key, fmt.Sprint(prevValue+1), 0, resp.Node.Value, prevIndex)
if err != nil {
log.Error(err)
<-time.After(RETRY_DELAY)
continue
}
return &pb.Snowflake_Value{int64(prevValue + 1)}, nil
}
return nil, errors.New("etcd server busy")
}
开发者ID:anders007,项目名称:snowflake,代码行数:35,代码来源:service.go
示例8: restore
func (s *server) restore() {
// restore data from db file
db := s.open_db()
defer db.Close()
count := 0
db.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(BOLTDB_BUCKET))
b.ForEach(func(k, v []byte) error {
var msg []Chat_Message
err := msgpack.Unmarshal(v, &msg)
if err != nil {
log.Critical("chat data corrupted:", err)
os.Exit(-1)
}
id, err := strconv.ParseUint(string(k), 0, 64)
if err != nil {
log.Critical("chat data corrupted:", err)
os.Exit(-1)
}
ep := NewEndPoint()
ep.inbox = msg
s.eps[id] = ep
count++
return nil
})
return nil
})
log.Infof("restored %v chats", count)
}
开发者ID:dexter-cn,项目名称:chat,代码行数:30,代码来源:service.go
示例9: dump
func (s *server) dump(db *bolt.DB, changes map[uint64]bool) {
db.Update(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(BOLTDB_BUCKET))
for k := range changes {
ep := s.read_ep(k)
if ep == nil {
log.Errorf("cannot find endpoint %v", k)
continue
}
// serialization and save
bin, err := msgpack.Marshal(ep.Read())
if err != nil {
log.Critical("cannot marshal:", err)
continue
}
err = b.Put([]byte(fmt.Sprint(k)), bin)
if err != nil {
log.Critical(err)
continue
}
}
return nil
})
}
开发者ID:dexter-cn,项目名称:chat,代码行数:25,代码来源:service.go
示例10: P_user_login_req
// 玩家登陆过程
func P_user_login_req(sess *Session, reader *packet.Packet) []byte {
// TODO: 登陆鉴权
sess.UserId = 1
// TODO: 选择登陆服务器
sess.GSID = DEFAULT_GSID
// 选服
cli, err := sp.GetServiceWithId(sp.SERVICE_GAME, sess.GSID)
if err != nil {
log.Critical(err)
return nil
}
// type assertion
game_cli, ok := cli.(spp.GameServiceClient)
if !ok {
log.Critical("cannot do type assertion on: %v", sess.GSID)
return nil
}
// 开启到游戏服的流
// TODO: 处理context,设定超时
stream, err := game_cli.Stream(context.Background())
if err != nil {
log.Critical(err)
return nil
}
sess.Stream = stream
// 在game注册
// TODO: 新用户的创建由game处理
sess.Stream.Send(&spp.Game_Frame{Type: spp.Game_Register, UserId: sess.UserId})
// 读取GAME返回消息
fetcher_task := func(sess *Session) {
for {
in, err := sess.Stream.Recv()
if err == io.EOF { // 流关闭
log.Trace(err)
return
}
if err != nil {
log.Error(err)
return
}
sess.MQ <- *in
}
}
go fetcher_task(sess)
return packet.Pack(Code["user_login_ack"], user_snapshot{F_uid: sess.UserId}, nil)
}
开发者ID:anders007,项目名称:agent,代码行数:53,代码来源:handle.go
示例11: Set
func (s *db) Set(tbl string, uid int32, data interface{}) error {
bin, err := msgpack.Marshal(data)
if err != nil {
log.Critical(err)
return err
}
_, err = s.redis_client.Cmd("SET", Key(tbl, uid), bin).Str()
if err != nil {
log.Critical(err)
return err
}
return nil
}
开发者ID:anders007,项目名称:libs,代码行数:13,代码来源:redis.go
示例12: Get
func (s *db) Get(tbl string, uid int32, data interface{}) error {
raw, err := s.redis_client.Cmd("GET", Key(tbl, uid)).Bytes()
if err != nil {
log.Critical(err)
return err
}
// unpack message from msgpack format
err = msgpack.Unmarshal(raw, &data)
if err != nil {
log.Critical(err)
return err
}
return nil
}
开发者ID:anders007,项目名称:libs,代码行数:14,代码来源:redis.go
示例13: P_user_login_req
// 玩家登陆过程
func P_user_login_req(sess *Session, reader *packet.Packet) []byte {
// TODO: 登陆鉴权
sess.UserId = 1
// TODO: 选择登陆服务器
sess.GSID = DEFAULT_GSID
// 选服
conn := sp.GetServiceWithId(sp.DEFAULT_SERVICE_PATH+"/game", sess.GSID)
if conn == nil {
log.Critical("cannot get game service:", sess.GSID)
return nil
}
cli := pb.NewGameServiceClient(conn)
// 开启到游戏服的流
// TODO: 处理context,设定超时
stream, err := cli.Stream(context.Background())
if err != nil {
log.Critical(err)
return nil
}
sess.Stream = stream
// 在game注册
// TODO: 新用户的创建由game处理
sess.Stream.Send(&pb.Game_Frame{Type: pb.Game_Register, UserId: sess.UserId})
// 读取GAME返回消息
fetcher_task := func(sess *Session) {
for {
in, err := sess.Stream.Recv()
if err == io.EOF { // 流关闭
log.Trace(err)
return
}
if err != nil {
log.Error(err)
return
}
select {
case sess.MQ <- *in:
case <-sess.Die:
}
}
}
go fetcher_task(sess)
return packet.Pack(Code["user_login_succeed_ack"], S_user_snapshot{F_uid: sess.UserId}, nil)
}
开发者ID:CowLeo,项目名称:agent,代码行数:50,代码来源:handle.go
示例14: recv
// stream receiver
func (s *server) recv(stream GameService_StreamServer) chan *Game_Frame {
ch := make(chan *Game_Frame, 1)
go func() {
for {
in, err := stream.Recv()
if err == io.EOF { // client closed
close(ch)
return
}
if err != nil {
log.Critical(err)
close(ch)
return
}
select {
case ch <- in:
case <-time.After(RECV_TIMEOUT):
log.Warning("recv deliver timeout")
close(ch)
return
}
}
}()
return ch
}
开发者ID:anders007,项目名称:game,代码行数:27,代码来源:service.go
示例15: recv
// stream receiver
func (s *server) recv(stream GameService_StreamServer, sess_die chan struct{}) chan *Game_Frame {
ch := make(chan *Game_Frame, 1)
go func() {
defer func() {
close(ch)
}()
for {
in, err := stream.Recv()
if err == io.EOF { // client closed
return
}
if err != nil {
log.Critical(err)
return
}
select {
case ch <- in:
case <-sess_die:
return
}
}
}()
return ch
}
开发者ID:tonycoming,项目名称:game,代码行数:26,代码来源:service.go
示例16: init
func (s *server) init() {
// get an unique value for consumer channel of nsq
s.machines = []string{DEFAULT_ETCD}
if env := os.Getenv("ETCD_HOST"); env != "" {
s.machines = strings.Split(env, ";")
}
s.client_pool = make(chan *etcd.Client, CLIENT_MAX)
// init client pool
for i := 0; i < CLIENT_MAX; i++ {
s.client_pool <- etcd.NewClient(s.machines)
}
// check if user specified machine id is set
if env := os.Getenv(ENV_MACHINE_ID); env != "" {
if id, err := strconv.Atoi(env); err == nil {
s.machine_id = (uint64(id) & MACHINE_ID_MASK) << 12
log.Info("machine id specified:", id)
} else {
log.Critical(err)
os.Exit(-1)
}
} else {
s.init_machine_id()
}
}
开发者ID:tonycoming,项目名称:snowflake,代码行数:27,代码来源:service.go
示例17: dump
func (s *server) dump(db *bolt.DB, changes map[uint64]bool) {
for k := range changes {
// marshal
var rs *RankSet
s.lock_read(func() {
rs = s.ranks[k]
})
if rs == nil {
log.Warning("empty rankset:", k)
continue
}
// serialization and save
bin, err := rs.Marshal()
if err != nil {
log.Critical("cannot marshal:", err)
os.Exit(-1)
}
db.Update(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(BOLTDB_BUCKET))
err := b.Put([]byte(fmt.Sprint(k)), bin)
return err
})
}
}
开发者ID:anders007,项目名称:rank,代码行数:26,代码来源:service.go
示例18: Publish
// publish to nsqd (localhost nsqd is suggested!)
func Publish(r *RedoRecord) {
// pack message
pack, err := msgpack.Marshal(r)
if err != nil {
log.Critical(err)
return
}
// post to nsqd
resp, err := http.Post(_pub_addr, MIME, bytes.NewReader(pack))
if err != nil {
log.Critical(err)
return
}
defer resp.Body.Close()
}
开发者ID:anders007,项目名称:libs,代码行数:17,代码来源:redolog.go
示例19: init
func (s *server) init() {
s.dirty_words = make(map[string]bool)
dict_path, dirty_words_path := s.data_path()
// 载入字典
log.Trace("Loading Dictionary...")
s.segmenter.LoadDictionary(dict_path)
log.Trace("Dictionary Loaded")
// 读取脏词库
log.Trace(SERVICE, "Loading Dirty Words...")
f, err := os.Open(dirty_words_path)
if err != nil {
log.Critical(err)
os.Exit(-1)
}
defer f.Close()
// 逐行扫描
scanner := bufio.NewScanner(f)
scanner.Split(bufio.ScanLines)
for scanner.Scan() {
word := strings.ToUpper(strings.TrimSpace(scanner.Text())) // 均处理为大写
if word != "" {
s.dirty_words[word] = true
}
}
log.Trace("Dirty Words Loaded")
}
开发者ID:tonycoming,项目名称:wordfilter,代码行数:30,代码来源:service.go
示例20: Key
func Key(tbl string, uid int32) string {
if tbl == "" || uid == 0 {
log.Critical("Key error: %+v: %+v", tbl, uid)
return ""
}
return fmt.Sprintf("%s:%s", tbl, uid)
}
开发者ID:anders007,项目名称:libs,代码行数:7,代码来源:redis.go
注:本文中的github.com/gonet2/libs/nsq-logger.Critical函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论