MCPcopy
hub / github.com/canopy-network/canopy / HandleMessageCreateOrder

Method HandleMessageCreateOrder

fsm/message.go:381–409  ·  view source on GitHub ↗

HandleMessageCreateOrder() is the proper handler for a `CreateOrder` message

(msg *MessageCreateOrder)

Source from the content-addressed store, hash-verified

379
380// HandleMessageCreateOrder() is the proper handler for a `CreateOrder` message
381func (s *StateMachine) HandleMessageCreateOrder(msg *MessageCreateOrder) (err lib.ErrorI) {
382 valParams, err := s.GetParamsVal()
383 if err != nil {
384 return
385 }
386 // ensure order isn't below the minimum size
387 if msg.AmountForSale < valParams.MinimumOrderSize {
388 return ErrMinimumOrderSize()
389 }
390 // subtract from account balance
391 address := crypto.NewAddress(msg.SellersSendAddress)
392 if err = s.AccountSub(address, msg.AmountForSale); err != nil {
393 return
394 }
395 // add to committee escrow pool
396 if err = s.PoolAdd(msg.ChainId+uint64(EscrowPoolAddend), msg.AmountForSale); err != nil {
397 return
398 }
399 // save the order in state
400 return s.SetOrder(&lib.SellOrder{
401 Id: msg.OrderId,
402 Committee: msg.ChainId,
403 Data: msg.Data,
404 AmountForSale: msg.AmountForSale,
405 RequestedAmount: msg.RequestedAmount,
406 SellerReceiveAddress: msg.SellerReceiveAddress,
407 SellersSendAddress: msg.SellersSendAddress,
408 }, msg.ChainId)
409}
410
411// HandleMessageEditOrder() is the proper handler for a `EditOrder` message
412func (s *StateMachine) HandleMessageEditOrder(msg *MessageEditOrder) (err lib.ErrorI) {

Callers 2

HandleMessageMethod · 0.95
TestMessageCreateOrderFunction · 0.80

Calls 6

GetParamsValMethod · 0.95
AccountSubMethod · 0.95
PoolAddMethod · 0.95
SetOrderMethod · 0.95
NewAddressFunction · 0.92
ErrMinimumOrderSizeFunction · 0.85

Tested by 1

TestMessageCreateOrderFunction · 0.64