作者:HackLinu
项目:nimbus.i
func handleFinishConjoinedArchive(message types.Message,
nimbusioWriter writer.NimbusioWriter,
replyChan chan<- *reply.ReplyMessage) {
var conjoined msg.Conjoined
var err error
conjoined, err = msg.UnmarshalConjoined(message.Marshalled)
if err != nil {
fog.Error("UnmarshalConjoined failed %s", err)
return
}
replyMessage := reply.NewReplyMessage("finish-conjoined-archive", message.ID,
conjoined.UserRequestID, conjoined.ReturnAddress)
lgr := logger.NewLogger(conjoined.UserRequestID, conjoined.UnifiedID,
0, 0, conjoined.Key)
lgr.Info("finish-conjoined-archive (%d)", conjoined.CollectionID)
if err = nimbusioWriter.FinishConjoinedArchive(conjoined); err != nil {
lgr.Error("StartConjoinedArchive: %s", err)
replyMessage.Error("error", err.Error())
replyChan <- replyMessage
return
}
replyMessage.Success()
replyChan <- replyMessage
return
}
作者:HackLinu
项目:nimbus.i
func handleArchiveKeyCancel(message types.Message,
nimbusioWriter writer.NimbusioWriter,
replyChan chan<- *reply.ReplyMessage) {
var archiveKeyCancel msg.ArchiveKeyCancel
var err error
archiveKeyCancel, err = msg.UnmarshalArchiveKeyCancel(message.Marshalled)
if err != nil {
fog.Error("UnmarshalArchiveKeyCancel failed %s", err)
return
}
replyMessage := reply.NewReplyMessage("archive-key-cancel", message.ID,
archiveKeyCancel.UserRequestID, archiveKeyCancel.ReturnAddress)
lgr := logger.NewLogger(archiveKeyCancel.UserRequestID, archiveKeyCancel.UnifiedID,
archiveKeyCancel.ConjoinedPart, archiveKeyCancel.SegmentNum, "")
lgr.Info("archive-key-cancel")
if err = nimbusioWriter.CancelSegment(archiveKeyCancel); err != nil {
lgr.Error("CancelSegment: %s", err)
replyMessage.Error("error", err.Error())
replyChan <- replyMessage
return
}
replyMessage.Success()
replyChan <- replyMessage
return
}
作者:HackLinu
项目:nimbus.i
func handleDestroyKey(message types.Message,
nimbusioWriter writer.NimbusioWriter,
replyChan chan<- *reply.ReplyMessage) {
var destroyKey msg.DestroyKey
var err error
destroyKey, err = msg.UnmarshalDestroyKey(message.Marshalled)
if err != nil {
fog.Error("UnmarshalDestroyKey failed %s", err)
return
}
replyMessage := reply.NewReplyMessage("destroy-key", message.ID,
destroyKey.UserRequestID, destroyKey.ReturnAddress)
lgr := logger.NewLogger(destroyKey.UserRequestID, destroyKey.UnifiedID,
destroyKey.ConjoinedPart, destroyKey.SegmentNum, destroyKey.Key)
lgr.Info("archive-key-cancel")
if err = nimbusioWriter.DestroyKey(destroyKey); err != nil {
lgr.Error("DestroyKey: %s", err)
replyMessage.Error("error", err.Error())
replyChan <- replyMessage
return
}
replyMessage.Success()
replyChan <- replyMessage
return
}
作者:HackLinu
项目:nimbus.i
func handleArchiveKeyNext(message types.Message,
nimbusioWriter writer.NimbusioWriter,
replyChan chan<- *reply.ReplyMessage) {
var archiveKeyNext msg.ArchiveKeyNext
var md5Digest []byte
var err error
archiveKeyNext, err = msg.UnmarshalArchiveKeyNext(message.Marshalled)
if err != nil {
fog.Error("UnmarshalArchiveKeyNext failed %s", err)
return
}
replyMessage := reply.NewReplyMessage("archive-key-final", message.ID,
archiveKeyNext.UserRequestID, archiveKeyNext.ReturnAddress)
lgr := logger.NewLogger(archiveKeyNext.UserRequestID, archiveKeyNext.UnifiedID,
archiveKeyNext.ConjoinedPart, archiveKeyNext.SegmentNum, archiveKeyNext.Key)
lgr.Info("archive-key-Next")
if archiveKeyNext.SegmentSize != uint64(len(message.Data)) {
lgr.Error("size mismatch (%d != %d)", archiveKeyNext.SegmentSize,
len(message.Data))
replyMessage.Error("size-mismatch", "segment size does not match expected value")
replyChan <- replyMessage
return
}
md5Digest, err = base64.StdEncoding.DecodeString(archiveKeyNext.EncodedSegmentMD5Digest)
if err != nil {
lgr.Error("base64.StdEncoding.DecodeString %s", err)
replyMessage.Error("base64", "base64.StdEncoding.DecodeString")
replyChan <- replyMessage
return
}
if !MD5DigestMatches(message.Data, md5Digest) {
lgr.Error("md5 mismatch")
replyMessage.Error("md5-mismatch", "segment md5 does not match expected value")
replyChan <- replyMessage
return
}
_, err = nimbusioWriter.StoreSequence(archiveKeyNext.UserRequestID,
archiveKeyNext.Segment,
archiveKeyNext.Sequence, message.Data)
if err != nil {
lgr.Error("StoreSequence: %s", err)
replyMessage.Error("error", err.Error())
replyChan <- replyMessage
return
}
replyMessage.Success()
replyChan <- replyMessage
return
}
作者:HackLinu
项目:nimbus.i
func handleArchiveKeyEntire(message types.Message,
nimbusioWriter writer.NimbusioWriter,
replyChan chan<- *reply.ReplyMessage) {
var archiveKeyEntire msg.ArchiveKeyEntire
var md5Digest []byte
var err error
var valueFileID uint32
archiveKeyEntire, err = msg.UnmarshalArchiveKeyEntire(message.Marshalled)
if err != nil {
fog.Error("UnmarshalArchiveKeyEntire failed %s", err)
return
}
replyMessage := reply.NewReplyMessage("archive-key-final", message.ID,
archiveKeyEntire.UserRequestID, archiveKeyEntire.ReturnAddress)
lgr := logger.NewLogger(archiveKeyEntire.UserRequestID, archiveKeyEntire.UnifiedID,
archiveKeyEntire.ConjoinedPart, archiveKeyEntire.SegmentNum, archiveKeyEntire.Key)
lgr.Info("archive-key-entire")
if archiveKeyEntire.SegmentSize != uint64(len(message.Data)) {
lgr.Error("size mismatch (%d != %d)", archiveKeyEntire.SegmentSize,
len(message.Data))
replyMessage.Error("size-mismatch", "segment size does not match expected value")
replyChan <- replyMessage
return
}
md5Digest, err = base64.StdEncoding.DecodeString(archiveKeyEntire.EncodedSegmentMD5Digest)
if err != nil {
lgr.Error("base64.StdEncoding.DecodeString %s", err)
replyMessage.Error("base64", "base64.StdEncoding.DecodeString")
replyChan <- replyMessage
return
}
if !MD5DigestMatches(message.Data, md5Digest) {
lgr.Error("md5 mismatch")
replyMessage.Error("md5-mismatch", "segment md5 does not match expected value")
replyChan <- replyMessage
return
}
err = nimbusioWriter.StartSegment(archiveKeyEntire.UserRequestID, archiveKeyEntire.Segment,
archiveKeyEntire.NodeNames)
if err != nil {
lgr.Error("StartSegment: %s", err)
replyMessage.Error("error", err.Error())
replyChan <- replyMessage
return
}
valueFileID, err = nimbusioWriter.StoreSequence(
archiveKeyEntire.UserRequestID,
archiveKeyEntire.Segment,
archiveKeyEntire.Sequence, message.Data)
if err != nil {
lgr.Error("StoreSequence: %s", err)
replyMessage.Error("error", err.Error())
replyChan <- replyMessage
return
}
metaData := msg.GetMetaFromJSON(message.Marshalled)
err = nimbusioWriter.FinishSegment(archiveKeyEntire.UserRequestID,
archiveKeyEntire.Segment,
archiveKeyEntire.File,
metaData,
valueFileID)
if err != nil {
lgr.Error("FinishSegment: %s", err)
replyMessage.Error("error", err.Error())
replyChan <- replyMessage
return
}
replyMessage.Success()
replyChan <- replyMessage
return
}