2 changed files with 88 additions and 0 deletions
@ -0,0 +1 @@ |
|||||
|
package cdr |
||||
@ -0,0 +1,87 @@ |
|||||
|
package cdr |
||||
|
|
||||
|
import ( |
||||
|
"time" |
||||
|
) |
||||
|
|
||||
|
type ( |
||||
|
// LineKind defines several types of records
|
||||
|
LineKind int |
||||
|
// ReasonKind is metadata about a certain Line
|
||||
|
ReasonKind int |
||||
|
) |
||||
|
|
||||
|
const ( |
||||
|
// UnknownLine aka "never seen this LineKind before"
|
||||
|
UnknownLine LineKind = iota |
||||
|
// VoiceLine aka "this line belongs to (a part of) a voice call"
|
||||
|
VoiceLine |
||||
|
// TextLine aka "this line belongs to a text message"
|
||||
|
TextLine |
||||
|
// DataLine aka "this line belongs to a data session"
|
||||
|
DataLine |
||||
|
) |
||||
|
|
||||
|
const ( |
||||
|
// UnknownReason aka "never seen this reason before"
|
||||
|
UnknownReason ReasonKind = iota |
||||
|
// ORIG aka "originated"
|
||||
|
ORIG |
||||
|
// CFIM aka "call forward immediately"
|
||||
|
CFIM |
||||
|
// CFNA aka "call forward not available"
|
||||
|
CFNA |
||||
|
// CFBS aka "call forward busy"
|
||||
|
CFBS |
||||
|
// CFOR aka "call forward out of reach"
|
||||
|
CFOR |
||||
|
// ROAM aka "roaming"
|
||||
|
ROAM |
||||
|
// PBXOR aka "PBX out of reach"
|
||||
|
PBXOR |
||||
|
) |
||||
|
|
||||
|
// Line contains common metadata for a record
|
||||
|
type Line struct { |
||||
|
Id string |
||||
|
Time time.Time |
||||
|
CLI string |
||||
|
From string |
||||
|
To string |
||||
|
Account string |
||||
|
Source string |
||||
|
Destination string |
||||
|
Reason ReasonKind |
||||
|
Leg int |
||||
|
Kind LineKind |
||||
|
} |
||||
|
|
||||
|
// PricedLine connects a cost (buy) and price (sell) to a particular Line
|
||||
|
type PricedLine struct { |
||||
|
Line |
||||
|
|
||||
|
Cost int |
||||
|
Price int |
||||
|
} |
||||
|
|
||||
|
// Call is a record of one or more PricedLines that ultimately form "a call".
|
||||
|
type Call struct { |
||||
|
From string |
||||
|
To string |
||||
|
Duration int |
||||
|
Cost int |
||||
|
Price int |
||||
|
Legs []PricedLine |
||||
|
} |
||||
|
|
||||
|
// Text is a specific PricedLine for a text message.
|
||||
|
type Text struct { |
||||
|
PricedLine |
||||
|
} |
||||
|
|
||||
|
// Data is a specific PricedLine that annotates the number of bytes consumed in that session.
|
||||
|
type Data struct { |
||||
|
PricedLine |
||||
|
|
||||
|
Bytes int |
||||
|
} |
||||
Loading…
Reference in new issue